From c51bb8a4d8ece9f48d40482b0af8e4be9f771432 Mon Sep 17 00:00:00 2001 From: tv Date: Fri, 6 Nov 2026 04:32:07 +0100 Subject: reach sets bounded --- src/swarm/peer/keepalive.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src/swarm/peer') diff --git a/src/swarm/peer/keepalive.rs b/src/swarm/peer/keepalive.rs index 44f2879..3b78b85 100644 --- a/src/swarm/peer/keepalive.rs +++ b/src/swarm/peer/keepalive.rs @@ -238,11 +238,17 @@ pub(super) async fn note_status(state: &AppState, peer: &str, remote: &transport peer_state.reported_heads = remote.heads.heads().map(<[_]>::len); peer_state.last_heads = Some((remote.epoch, remote.heads.clone())); if let Some(reaches) = &remote.reaches { - peer_state.reaches = Some((Instant::now(), reaches.clone())); - peer_state.round_trips = remote - .round_trips - .clone() - .filter(|round_trips| round_trips.len() == reaches.len()); + match crate::swarm::reach::said(reaches, remote.round_trips.as_deref()) { + Some((reaches, round_trips)) => { + peer_state.reaches = Some((Instant::now(), reaches)); + peer_state.round_trips = round_trips; + } + None => debug!( + peer = %peer, + reaches = reaches.len(), + "Ignoring a reach set larger than any node's" + ), + } } drop(peer_state); if left { -- cgit v1.3.1