diff --git a/proxy/socks5/server.go b/proxy/socks5/server.go index d8eaa16..3dd10ec 100644 --- a/proxy/socks5/server.go +++ b/proxy/socks5/server.go @@ -145,6 +145,7 @@ func (s *Socks5) serveSession(session *Session) { dstC, dialer, writeTo, err := s.proxy.DialUDP("udp", session.srcPC.tgtAddr.String()) if err != nil { log.F("[socks5u] remote dial error: %v", err) + nm.Delete(session.key) return } dstPC := NewPktConn(dstC, writeTo, nil, false, nil) diff --git a/proxy/ss/server.go b/proxy/ss/server.go index 79f80eb..a9fe535 100644 --- a/proxy/ss/server.go +++ b/proxy/ss/server.go @@ -132,6 +132,7 @@ func (s *SS) serveSession(session *Session) { dstC, dialer, writeTo, err := s.proxy.DialUDP("udp", session.srcPC.tgtAddr.String()) if err != nil { log.F("[ssu] remote dial error: %v", err) + nm.Delete(session.key) return } dstPC := NewPktConn(dstC, writeTo, nil, false) diff --git a/proxy/tproxy/server.go b/proxy/tproxy/server.go index 3982c37..4adcd58 100644 --- a/proxy/tproxy/server.go +++ b/proxy/tproxy/server.go @@ -106,6 +106,7 @@ func (s *TProxy) serveSession(session *Session) { dstPC, dialer, writeTo, err := s.proxy.DialUDP("udp", session.dst.String()) if err != nil { log.F("[tproxyu] dial to %s error: %v", session.dst, err) + nm.Delete(session.key) return } defer dstPC.Close() diff --git a/proxy/udp/udp.go b/proxy/udp/udp.go index 6a0f9c4..80ab3a8 100644 --- a/proxy/udp/udp.go +++ b/proxy/udp/udp.go @@ -94,6 +94,7 @@ func (s *UDP) serveSession(session *Session) { dstPC, dialer, writeTo, err := s.proxy.DialUDP("udp", session.src.String()) if err != nil { log.F("[udp] remote dial error: %v", err) + nm.Delete(session.key) return } defer dstPC.Close() diff --git a/proxy/unix/server.go b/proxy/unix/server.go index 6671ba2..dc2d891 100644 --- a/proxy/unix/server.go +++ b/proxy/unix/server.go @@ -143,6 +143,7 @@ func (s *Unix) serveSession(session *Session) { dstPC, dialer, writeTo, err := s.proxy.DialUDP("udp", "") if err != nil { log.F("[unix] remote dial error: %v", err) + nm.Delete(session.key) return } defer dstPC.Close()