aboutsummaryrefslogtreecommitdiffstats
path: root/src/swarm/peer/keepalive.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/swarm/peer/keepalive.rs')
-rw-r--r--src/swarm/peer/keepalive.rs16
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 {