diff --git a/pkg/nathole/nathole.go b/pkg/nathole/nathole.go index 72522fac..7d6ebe89 100644 --- a/pkg/nathole/nathole.go +++ b/pkg/nathole/nathole.go @@ -298,11 +298,13 @@ func waitDetectMessage( n, raddr, err := conn.ReadFromUDP(buf) _ = conn.SetReadDeadline(time.Time{}) if err != nil { + pool.PutBuf(buf) return nil, err } xl.Debugf("get udp message local %s, from %s", conn.LocalAddr(), raddr) var m msg.NatHoleSid if err := DecodeMessageInto(buf[:n], key, &m); err != nil { + pool.PutBuf(buf) xl.Warnf("decode sid message error: %v", err) continue } diff --git a/pkg/proto/udp/udp.go b/pkg/proto/udp/udp.go index 4d3df5af..21c41680 100644 --- a/pkg/proto/udp/udp.go +++ b/pkg/proto/udp/udp.go @@ -85,6 +85,7 @@ func Forwarder(dstAddr *net.UDPAddr, readCh <-chan *msg.UDPPacket, sendCh chan<- }() buf := pool.GetBuf(bufSize) + defer pool.PutBuf(buf) for { _ = udpConn.SetReadDeadline(time.Now().Add(30 * time.Second)) n, _, err := udpConn.ReadFromUDP(buf)