aboutsummaryrefslogtreecommitdiffstats
path: root/src/swarm/peer
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-10-31 06:50:07 +0100
committertv <tv@krebsco.de>2026-10-31 06:50:07 +0100
commit32c788b4d6245abebafb250b005a211fcbeac32c (patch)
tree01a5bdb8d92cfd3dc6e7e52ad44021873d905a71 /src/swarm/peer
parentcd848f2a502a0b06e0a420d5575adbf68ded9ab1 (diff)
pong carries time
Diffstat (limited to 'src/swarm/peer')
-rw-r--r--src/swarm/peer/inbound.rs4
-rw-r--r--src/swarm/peer/keepalive.rs7
2 files changed, 7 insertions, 4 deletions
diff --git a/src/swarm/peer/inbound.rs b/src/swarm/peer/inbound.rs
index b57feaf..18d29d5 100644
--- a/src/swarm/peer/inbound.rs
+++ b/src/swarm/peer/inbound.rs
@@ -33,7 +33,7 @@ pub(crate) async fn handle_message(
return Ok(());
}
// PING and PONG only say the peer is alive (`keepalive::note_alive`).
- if matches!(message, ParsedMessage::Ping(_) | ParsedMessage::Pong(_)) {
+ if matches!(message, ParsedMessage::Ping(_) | ParsedMessage::Pong { .. }) {
note_alive(state, &peer, &message).await;
return Ok(());
}
@@ -165,7 +165,7 @@ pub(crate) async fn handle_message(
transport::ParsedMessage::Who(_)
| transport::ParsedMessage::Me(_)
| transport::ParsedMessage::Ping(_)
- | transport::ParsedMessage::Pong(_) => {}
+ | transport::ParsedMessage::Pong { .. } => {}
}
Ok(())
diff --git a/src/swarm/peer/keepalive.rs b/src/swarm/peer/keepalive.rs
index 5e03d0e..11817cc 100644
--- a/src/swarm/peer/keepalive.rs
+++ b/src/swarm/peer/keepalive.rs
@@ -48,12 +48,15 @@ pub(super) async fn note_alive(state: &AppState, peer: &str, message: &ParsedMes
let now = Instant::now();
match message {
ParsedMessage::Ping(nonce) if !state.transport.answers_pings() => {
- let pong = ParsedMessage::Pong(*nonce);
+ let pong = ParsedMessage::Pong {
+ nonce: *nonce,
+ at: state.clock.now_millis(),
+ };
if let Err(error) = state.transport.send_message(peer, &pong).await {
debug!(peer = %peer, error = %format!("{error:#}"), "PONG failed");
}
}
- ParsedMessage::Pong(_) => {
+ ParsedMessage::Pong { .. } => {
if let Some(rtt) = state.transport.rtt(peer) {
state.lock_rtt().measured(peer, rtt, now);
}