From f8c3b5d030a6e8052ea4274dd0892378ccefe804 Mon Sep 17 00:00:00 2001 From: 5aaee9 <7685264+5aaee9@users.noreply.github.com> Date: Tue, 21 May 2024 22:20:23 +0800 Subject: [PATCH] fix(listener/tproxy): possilly using released buffer in tproxy --- listener/tproxy/packet.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/listener/tproxy/packet.go b/listener/tproxy/packet.go index e4852665..a9481c5b 100644 --- a/listener/tproxy/packet.go +++ b/listener/tproxy/packet.go @@ -105,11 +105,13 @@ func listenLocalConn(rAddr, lAddr net.Addr, tunnel C.Tunnel) (*net.UDPConn, erro buf := pool.Get(pool.UDPBufferSize) br, err := lc.Read(buf) if err != nil { - pool.Put(buf) if errors.Is(err, net.ErrClosed) { log.Debugln("TProxy local conn listener exit.. rAddr=%s lAddr=%s", rAddr.String(), lAddr.String()) + pool.Put(buf) return } + + log.Debugln("TProxy local conn read err=%v", err) } // since following localPackets are pass through this socket which listen rAddr // I choose current listener as packet's packet conn