From eb42086f9c73a207f9db3c3bc5a601009423d6ff Mon Sep 17 00:00:00 2001 From: "Sijie.Sun" Date: Sat, 13 Sep 2025 08:48:37 +0800 Subject: [PATCH] set correct route policy for udp/icmp (#1361) --- easytier/src/gateway/icmp_proxy.rs | 6 ++++-- easytier/src/gateway/udp_proxy.rs | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/easytier/src/gateway/icmp_proxy.rs b/easytier/src/gateway/icmp_proxy.rs index fc1f3db..172fd4f 100644 --- a/easytier/src/gateway/icmp_proxy.rs +++ b/easytier/src/gateway/icmp_proxy.rs @@ -274,10 +274,12 @@ impl IcmpProxy { } let peer_manager = self.peer_manager.clone(); + let is_latency_first = self.global_ctx.get_flags().latency_first; self.tasks.lock().await.spawn( async move { - while let Some(msg) = receiver.recv().await { - let hdr = msg.peer_manager_header().unwrap(); + while let Some(mut msg) = receiver.recv().await { + let hdr = msg.mut_peer_manager_header().unwrap(); + hdr.set_latency_first(is_latency_first); let to_peer_id = hdr.to_peer_id.into(); let Some(pm) = peer_manager.upgrade() else { tracing::warn!("peer manager is gone, icmp proxy send loop exit"); diff --git a/easytier/src/gateway/udp_proxy.rs b/easytier/src/gateway/udp_proxy.rs index 4400749..7d6948b 100644 --- a/easytier/src/gateway/udp_proxy.rs +++ b/easytier/src/gateway/udp_proxy.rs @@ -436,9 +436,12 @@ impl UdpProxy { // forward packets to peer manager let mut receiver = self.receiver.lock().await.take().unwrap(); let peer_manager = self.peer_manager.clone(); + let is_latency_first = self.global_ctx.get_flags().latency_first; self.tasks.lock().await.spawn(async move { - while let Ok(msg) = receiver.recv().await { - let to_peer_id: PeerId = msg.peer_manager_header().unwrap().to_peer_id.get(); + while let Ok(mut msg) = receiver.recv().await { + let hdr = msg.mut_peer_manager_header().unwrap(); + hdr.set_latency_first(is_latency_first); + let to_peer_id = hdr.to_peer_id.into(); tracing::trace!(?msg, ?to_peer_id, "udp nat packet response send"); let ret = peer_manager.send_msg(msg, to_peer_id).await; if ret.is_err() {