From aea28ca6dc07ff3f9977ed0eee3b8eaaec60f8e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Fri, 21 Aug 2026 20:03:40 +0800 Subject: [PATCH] Cache tproxy UDP write-back connection when netns is configured --- protocol/redirect/tproxy.go | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/protocol/redirect/tproxy.go b/protocol/redirect/tproxy.go index ed2c6bd7..ab5ba660 100644 --- a/protocol/redirect/tproxy.go +++ b/protocol/redirect/tproxy.go @@ -146,15 +146,13 @@ type tproxyPacketWriter struct { func (w *tproxyPacketWriter) WritePacket(buffer *buf.Buffer, destination M.Socksaddr) error { defer buffer.Release() - if w.listener.ListenOptions().NetNs == "" { - conn := w.conn - if w.destination == destination && conn != nil { - _, err := conn.WriteToUDPAddrPort(buffer.Bytes(), w.source) - if err != nil { - w.conn = nil - } - return err + conn := w.conn + if w.destination == destination && conn != nil { + _, err := conn.WriteToUDPAddrPort(buffer.Bytes(), w.source) + if err != nil { + w.conn = nil } + return err } var listenConfig net.ListenConfig listenConfig.Control = control.Append(listenConfig.Control, control.ReuseAddr()) @@ -164,7 +162,7 @@ func (w *tproxyPacketWriter) WritePacket(buffer *buf.Buffer, destination M.Socks return err } udpConn := packetConn.(*net.UDPConn) - if w.listener.ListenOptions().NetNs == "" && w.destination == destination { + if w.destination == destination { w.conn = udpConn } else { defer udpConn.Close()