diff options
| author | tv <tv@krebsco.de> | 2026-11-06 05:01:44 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-11-06 05:01:44 +0100 |
| commit | 31378bcb137f3d43bb74604df0a9e601b07d1525 (patch) | |
| tree | 4835cd3b57b2a7e27b3875d1c82bc15cdad7ee83 /src/swarm | |
| parent | 9cf079423c60c15f660a14f07eb9fdcde6c9cb40 (diff) | |
heads heard in replies
Diffstat (limited to 'src/swarm')
| -rw-r--r-- | src/swarm/peer/inbound.rs | 3 | ||||
| -rw-r--r-- | src/swarm/peer/keepalive.rs | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/src/swarm/peer/inbound.rs b/src/swarm/peer/inbound.rs index 8a424b8..8980fd3 100644 --- a/src/swarm/peer/inbound.rs +++ b/src/swarm/peer/inbound.rs @@ -235,6 +235,9 @@ pub(crate) async fn handle_message( if let Some(at) = announced { crate::swarm::relay::slow_round_answered(state, at.elapsed()); } + // Keepalives go one way between a pair (the one with the shorter interval + // takes the turns): the other side hears the peer's heads in its replies. + heard_heads(state, &peer, &remote); on_status(state, &peer, &remote, reactivated).await; } transport::ParsedMessage::Links(request) => { diff --git a/src/swarm/peer/keepalive.rs b/src/swarm/peer/keepalive.rs index 693a370..a4def86 100644 --- a/src/swarm/peer/keepalive.rs +++ b/src/swarm/peer/keepalive.rs @@ -218,7 +218,7 @@ pub(super) async fn status_received(state: &AppState, peer: &str) { } } -/// A keepalive STATUS said the peer's heads: what it has counts as sent to it no more +/// A keepalive STATUS, or a STATUS_REPLY, said the peer's heads: what it has counts as sent to it no more /// (`SyncSession::heard_heads`). Off the consumer: it takes the document's lock. pub(super) fn heard_heads(state: &AppState, peer: &str, remote: &transport::Status) { let Some(heads) = remote.heads.heads() else { |
