diff options
Diffstat (limited to 'src/swarm/peer')
| -rw-r--r-- | src/swarm/peer/keepalive.rs | 16 |
1 files changed, 11 insertions, 5 deletions
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 { |
