diff options
| author | tv <tv@krebsco.de> | 2026-10-21 14:12:01 +0200 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-10-21 14:12:01 +0200 |
| commit | c9279e4907ceb3cab2abd3ad6e62d011d7d8a1c2 (patch) | |
| tree | 006959c9270ed926f8fb0a98aac5ecae46047eb3 /src/swarm/peer.rs | |
| parent | 5e2bf9b34486b1e1d91a6b2fb6748d506487b915 (diff) | |
resend sync messages that haven't been replied
Diffstat (limited to 'src/swarm/peer.rs')
| -rw-r--r-- | src/swarm/peer.rs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/swarm/peer.rs b/src/swarm/peer.rs index b092b03..6184427 100644 --- a/src/swarm/peer.rs +++ b/src/swarm/peer.rs @@ -387,13 +387,21 @@ pub(crate) async fn run_peer_worker(state: AppState) { for (peer, peer_state_mutex) in &peers { let now = Instant::now(); - let (became_dormant, ping_due) = { + let (became_dormant, ping_due, unanswered) = { let mut peer_state = peer_state_mutex.lock().await; let became_dormant = ready && peer_state.check_dormancy(&state.timing, now); let ping_due = peer_state.take_keepalive_due(&state.timing, now); - (became_dormant, ping_due) + let unanswered = peer_state.take_overdue_sync_reply(now); + (became_dormant, ping_due, unanswered) }; + if let Some(changes) = unanswered { + debug!(peer = %peer, changes, "No answer to our sync message; sending again"); + let _ = state + .sync_events + .send(SyncEvent::PeerNeedsSync(peer.clone())); + } + if became_dormant { warn!( peer = %peer, |
