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)]