From 02fe89f7d0a61d8fe08301411ead6030e442f5c4 Mon Sep 17 00:00:00 2001 From: Alexey <247128645+axkurcom@users.noreply.github.com> Date: Fri, 6 Mar 2026 20:00:32 +0300 Subject: [PATCH] DC Endpoints on default Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com> --- src/main.rs | 15 ++++++----- src/transport/middle_proxy/handshake.rs | 33 +------------------------ src/transport/middle_proxy/health.rs | 2 +- 3 files changed, 9 insertions(+), 41 deletions(-) diff --git a/src/main.rs b/src/main.rs index a9207ac..ee5aaad 100644 --- a/src/main.rs +++ b/src/main.rs @@ -942,22 +942,21 @@ async fn main() -> std::result::Result<(), Box> { let mut grouped: BTreeMap> = BTreeMap::new(); for report in me_results { for s in report.samples { - let key = s.dc.abs(); - grouped.entry(key).or_default().push(s); + grouped.entry(s.dc).or_default().push(s); } } let family_order = if prefer_ipv6 { - vec![(MePingFamily::V6, true), (MePingFamily::V6, false), (MePingFamily::V4, true), (MePingFamily::V4, false)] + vec![MePingFamily::V6, MePingFamily::V4] } else { - vec![(MePingFamily::V4, true), (MePingFamily::V4, false), (MePingFamily::V6, true), (MePingFamily::V6, false)] + vec![MePingFamily::V4, MePingFamily::V6] }; - for (dc_abs, samples) in grouped { - for (family, is_pos) in &family_order { + for (dc, samples) in grouped { + for family in &family_order { let fam_samples: Vec<&MePingSample> = samples .iter() - .filter(|s| matches!(s.family, f if &f == family) && (s.dc >= 0) == *is_pos) + .filter(|s| matches!(s.family, f if &f == family)) .collect(); if fam_samples.is_empty() { continue; @@ -967,7 +966,7 @@ async fn main() -> std::result::Result<(), Box> { MePingFamily::V4 => "IPv4", MePingFamily::V6 => "IPv6", }; - info!(" DC{} [{}]", dc_abs, fam_label); + info!(" DC{} [{}]", dc, fam_label); for sample in fam_samples { let line = format_sample_line(sample); info!("{}", line); diff --git a/src/transport/middle_proxy/handshake.rs b/src/transport/middle_proxy/handshake.rs index 77634a6..948c999 100644 --- a/src/transport/middle_proxy/handshake.rs +++ b/src/transport/middle_proxy/handshake.rs @@ -84,38 +84,7 @@ impl MePool { } async fn resolve_dc_idx_for_endpoint(&self, addr: SocketAddr) -> Option { - if addr.is_ipv4() { - let map = self.proxy_map_v4.read().await; - for (dc, addrs) in map.iter() { - if addrs - .iter() - .any(|(ip, port)| SocketAddr::new(*ip, *port) == addr) - { - let abs_dc = dc.abs(); - if abs_dc > 0 - && let Ok(dc_idx) = i16::try_from(abs_dc) - { - return Some(dc_idx); - } - } - } - } else { - let map = self.proxy_map_v6.read().await; - for (dc, addrs) in map.iter() { - if addrs - .iter() - .any(|(ip, port)| SocketAddr::new(*ip, *port) == addr) - { - let abs_dc = dc.abs(); - if abs_dc > 0 - && let Ok(dc_idx) = i16::try_from(abs_dc) - { - return Some(dc_idx); - } - } - } - } - None + i16::try_from(self.resolve_dc_for_endpoint(addr).await).ok() } fn direct_bind_ip_for_stun( diff --git a/src/transport/middle_proxy/health.rs b/src/transport/middle_proxy/health.rs index 1cc8d8a..9a54e32 100644 --- a/src/transport/middle_proxy/health.rs +++ b/src/transport/middle_proxy/health.rs @@ -102,7 +102,7 @@ async fn check_family( let mut dc_endpoints = HashMap::>::new(); for (dc, addrs) in map { - let entry = dc_endpoints.entry(dc.abs()).or_default(); + let entry = dc_endpoints.entry(dc).or_default(); for (ip, port) in addrs { entry.push(SocketAddr::new(ip, port)); }