diff options
| author | tv <tv@krebsco.de> | 2026-10-29 01:25:55 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-10-29 01:25:55 +0100 |
| commit | da533d02a2f7f3ef907c1dc834ef876966dc5525 (patch) | |
| tree | 8e4a2f453f519d664e3bfc1ec6ccc14fdb426b00 /src/swarm/peer/keepalive.rs | |
| parent | 387eea0da4ed0774bd0102d3fccee3f9a9f7159b (diff) | |
topology: introduce outbound members
Diffstat (limited to 'src/swarm/peer/keepalive.rs')
| -rw-r--r-- | src/swarm/peer/keepalive.rs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/swarm/peer/keepalive.rs b/src/swarm/peer/keepalive.rs index ea7ade2..afc2b3d 100644 --- a/src/swarm/peer/keepalive.rs +++ b/src/swarm/peer/keepalive.rs @@ -171,9 +171,14 @@ pub(super) async fn note_status(state: &AppState, peer: &str, remote: &transport let mut peer_state = peer_state.lock().await; let became_ready = remote.ready && peer_state.reports_ready != Some(true); peer_state.reports_ready = Some(remote.ready); - peer_state.syncs_with_us = Some(remote.syncs_with_you); + let changed = + peer_state.syncs_with_us.replace(remote.syncs_with_you) != Some(remote.syncs_with_you); peer_state.reported_heads = remote.heads.heads().map(<[_]>::len); drop(peer_state); + if changed { + // A neighbour that only connects out stays one as long as it says so. + state.topology_changed.notify_one(); + } // Off the consumer: telling which heads we lack takes the document's lock. { let (state, peer, remote) = (state.clone(), peer.to_owned(), remote.clone()); |
