fix(linux-rust): Retry L2CAP send on ENOTCONN during BlueZ Handshake (#495)

This fix allows the send thread to make 10 attempts to send it's data.
This gives access to seeing the battery status
This commit is contained in:
Jack
2026-04-20 01:26:56 -07:00
committed by GitHub
parent 2f1208ca87
commit a78a8bb6be

View File

@@ -1233,11 +1233,23 @@ async fn recv_thread(manager: AACPManager, sp: Arc<SeqPacket>) {
async fn send_thread(mut rx: mpsc::Receiver<Vec<u8>>, sp: Arc<SeqPacket>) {
while let Some(data) = rx.recv().await {
if let Err(e) = sp.send(&data).await {
error!("Failed to send data: {}", e);
break;
let mut attempts = 0;
loop {
match sp.send(&data).await {
Ok(_) => {
debug!("Sent {} bytes: {}", data.len(), hex::encode(&data));
break;
}
Err(e) if e.raw_os_error() == Some(107) && attempts < 10 => {
attempts += 1;
sleep(Duration::from_millis(100)).await;
}
Err(e) => {
error!("Failed to send data: {}", e);
return;
}
}
}
debug!("Sent {} bytes: {}", data.len(), hex::encode(&data));
}
info!("Send thread finished.");
}