Fix UI sync bugs and disconnect hang

- Add NeighborDown event handler in gossip network to reliably remove disconnected peers.
- Add 1-second timeout wrapper to router.shutdown() to prevent UI hanging on disconnect.
This commit is contained in:
2026-05-27 05:54:44 -04:00
parent 5ddb792f0f
commit ea5ffb861b
2 changed files with 16 additions and 6 deletions
+5
View File
@@ -195,6 +195,11 @@ impl RoomState for IrohGossipState {
}
Ok(iroh_gossip::api::Event::NeighborDown(peer_id)) => {
crate::log_msg(&format!("Gossip event: NeighborDown={:?}", peer_id));
let removed = peers.lock().unwrap().remove(&peer_id).is_some();
if removed {
crate::log_msg(&format!("Removed peer due to NeighborDown: {:?}", peer_id));
let _ = event_tx.send(RoomEvent::PeerLeft(peer_id)).await;
}
}
Ok(other) => {
crate::log_msg(&format!("Gossip other event: {:?}", other));