aboutsummaryrefslogtreecommitdiffstats
path: root/src/api/peers.rs
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-10-31 06:51:17 +0100
committertv <tv@krebsco.de>2026-10-31 06:51:17 +0100
commit4855ff63536430b1cd26734a0eeeaf0c25df553e (patch)
tree0c7d636fc007301b37a28ee3b48bfbf2283b9342 /src/api/peers.rs
parenta216c65c48f6b662ce083873d6e344fbee1c556b (diff)
calculate peer clock drift
Diffstat (limited to 'src/api/peers.rs')
-rw-r--r--src/api/peers.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/api/peers.rs b/src/api/peers.rs
index 020221b..3fe4c39 100644
--- a/src/api/peers.rs
+++ b/src/api/peers.rs
@@ -18,6 +18,7 @@ use crate::locks::MutexExt;
use crate::state::{AppState, HelloState, Incidents, Liveness};
use crate::swarm::peer::forgotten_path;
use crate::transport::Destination;
+use crate::transport::paths::ClockOffset;
use crate::transport::traffic::PeerTraffic;
#[derive(Debug, Serialize)]
@@ -66,6 +67,9 @@ pub(crate) struct PeerStatus {
/// Smoothed sync throughput (`swarm::throughput`); absent before the first large
/// exchange.
pub(crate) sync_throughput: Option<ThroughputInfo>,
+ /// How far its clock is ahead of ours, give or take (`Transport::clock_offset`);
+ /// absent before a PONG from it.
+ pub(crate) clock: Option<ClockOffset>,
}
#[derive(Debug, Serialize)]
@@ -141,6 +145,7 @@ pub(crate) async fn peer_list(state: &AppState) -> PeerListResponse {
let alias = aliases.remove(&peer);
let addresses = state.transport.addresses_of(&peer);
let destination = state.transport.destination(&peer);
+ let clock = state.transport.clock_offset(&peer);
peers.insert(
peer,
PeerStatus {
@@ -168,6 +173,7 @@ pub(crate) async fn peer_list(state: &AppState) -> PeerListResponse {
traffic,
incidents: ps.incidents,
sync_throughput,
+ clock,
},
);
}