From 0b13e180c4dcd38e3ea8ffeecc9e5ebefa023212 Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 26 Oct 2026 05:54:53 +0100 Subject: number handshakes This prevents late hellos from resetting the session. --- src/state/peer.rs | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/state/peer.rs') diff --git a/src/state/peer.rs b/src/state/peer.rs index e96cd9c..2ac6b1a 100644 --- a/src/state/peer.rs +++ b/src/state/peer.rs @@ -102,6 +102,11 @@ pub(crate) struct PeerState { pub(crate) epoch_seq: Option, /// The peer's run, from its HELLO or HELLO_REPLY: a new one starts `epoch_seq` over. pub(crate) run_id: Option, + /// The newest handshake the peer started with us: its run and number + /// (`HelloRequest::handshake`). A HELLO repeating it is a retry or a late copy. + pub(crate) last_hello: Option<(crate::transport::RunId, u32)>, + /// The number of our current handshake with the peer (`AppState::handshakes`). + pub(crate) handshake: u32, /// Whether the peer was ready according to its most recent sync message or keepalive. pub(crate) reports_ready: Option, @@ -169,6 +174,8 @@ impl PeerState { epoch: None, epoch_seq: None, run_id: None, + last_hello: None, + handshake: 0, reports_ready: None, syncs_with_us: None, reported_heads: None, -- cgit v1.3.1