From f05b7cceb220c18913cfdfaebf5b023a0e031452 Mon Sep 17 00:00:00 2001 From: Nils Andreas Svee Date: Wed, 13 May 2026 12:44:35 +0700 Subject: [PATCH] refactor(irtt-stats): improve duration safety by handling negative time offsets --- crates/irtt-stats/src/lib.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/crates/irtt-stats/src/lib.rs b/crates/irtt-stats/src/lib.rs index af60912..adfcb3e 100644 --- a/crates/irtt-stats/src/lib.rs +++ b/crates/irtt-stats/src/lib.rs @@ -414,9 +414,9 @@ impl CoreStats { Some(IpdvPairUpdate { previous_seq, current_seq, - rtt_ipdv: duration_from_i128_ns(rtt_ipdv), - send_ipdv: send_ipdv.map(duration_from_i128_ns), - receive_ipdv: receive_ipdv.map(duration_from_i128_ns), + rtt_ipdv: duration_from_non_negative_i128_ns(rtt_ipdv)?, + send_ipdv: send_ipdv.map(duration_from_non_negative_i128_ns)?, + receive_ipdv: receive_ipdv.map(duration_from_non_negative_i128_ns)?, }) } @@ -858,8 +858,8 @@ fn abs_i128_ns(value: i128) -> i128 { value.saturating_abs() } -fn duration_from_i128_ns(value: i128) -> Duration { - Duration::from_nanos(u64::try_from(value).unwrap_or(u64::MAX)) +fn duration_from_non_negative_i128_ns(value: i128) -> Option { + u64::try_from(value).ok().map(Duration::from_nanos) } #[cfg(test)]