fix: set serverAddrs to nil when closing an ObfsUDPHopClientPacketConn to prevent memory leaks

This commit is contained in:
tobyxdd 2023-02-14 21:30:45 -08:00
parent a48d6ddb7c
commit 1d9fa029c2

View File

@ -204,6 +204,9 @@ func (c *ObfsUDPHopClientPacketConn) ReadFrom(b []byte) (int, net.Addr, error) {
func (c *ObfsUDPHopClientPacketConn) WriteTo(b []byte, addr net.Addr) (int, error) { func (c *ObfsUDPHopClientPacketConn) WriteTo(b []byte, addr net.Addr) (int, error) {
c.connMutex.RLock() c.connMutex.RLock()
defer c.connMutex.RUnlock() defer c.connMutex.RUnlock()
if c.closed {
return 0, net.ErrClosed
}
/* /*
// Check if the address is the server address // Check if the address is the server address
if addr.String() != c.serverAddr.String() { if addr.String() != c.serverAddr.String() {
@ -229,6 +232,7 @@ func (c *ObfsUDPHopClientPacketConn) Close() error {
err := c.currentConn.Close() err := c.currentConn.Close()
close(c.closeChan) close(c.closeChan)
c.closed = true c.closed = true
c.serverAddrs = nil // For GC
return err return err
} }