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:
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user