From 67a2beccc51f8e33cbd813f46a5583dc4a2bd23f Mon Sep 17 00:00:00 2001 From: Lowder Date: Sun, 27 Sep 2026 16:43:50 +0500 Subject: [PATCH] fix: zero hop (#96) --- Cargo.lock | 2 +- probe/Cargo.toml | 2 +- probe/src/main.rs | 19 ++++++++++++++++++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index baefe9e..989f0e8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2488,7 +2488,7 @@ dependencies = [ [[package]] name = "probe" -version = "0.6.6" +version = "0.6.7" dependencies = [ "anyhow", "clap", diff --git a/probe/Cargo.toml b/probe/Cargo.toml index 495fbfb..92aba9b 100644 --- a/probe/Cargo.toml +++ b/probe/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "probe" -version = "0.6.6" +version = "0.6.7" edition = "2024" license-file = "../LICENSE" description = "Dynamic network probe daemon for Cheburcheck" diff --git a/probe/src/main.rs b/probe/src/main.rs index ecb7735..0e1231c 100644 --- a/probe/src/main.rs +++ b/probe/src/main.rs @@ -512,7 +512,7 @@ fn dpi_hop_from_result(result: &dpi_hop::DpiHopProbeResult) -> Option { ); return None; } - result.max_icmp_time_exceeded_ttl + Some(result.max_icmp_time_exceeded_ttl.unwrap_or(0)) } async fn wait_for_connection(eventloop: &mut rumqttc::EventLoop) { @@ -770,4 +770,21 @@ mod tests { assert_eq!(dpi_hop_from_result(&result), None); } } + + #[test] + fn missing_icmp_time_exceeded_defaults_dpi_hop_to_zero() { + let result = dpi_hop::DpiHopProbeResult { + target: "203.0.113.10:443".parse().unwrap(), + local_addr: "192.0.2.10:45000".parse().unwrap(), + client_hello_bytes: 256, + max_icmp_time_exceeded_ttl: None, + hops: vec![dpi_hop::DpiHopProbeHop { + ttl: 1, + router: None, + outcome: dpi_hop::DpiHopProbeHopOutcome::Timeout, + }], + }; + + assert_eq!(dpi_hop_from_result(&result), Some(0)); + } }