From 50886bd69a77533edf09db328941a25c159f77fa Mon Sep 17 00:00:00 2001 From: arraykeys Date: Wed, 4 Jul 2018 21:51:59 +0800 Subject: [PATCH] no message --- services/socks/socks.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/services/socks/socks.go b/services/socks/socks.go index 873a477..d18490f 100644 --- a/services/socks/socks.go +++ b/services/socks/socks.go @@ -563,7 +563,7 @@ func (s *Socks) proxyUDP(inConn *net.Conn, methodReq socks.MethodsRequest, reque if outUDPConn != nil { raddr = outUDPConn.RemoteAddr().String() } - s.log.Printf("udp related tcp conn disconnected , %s -> %s", inconnRemoteAddr, raddr) + s.log.Printf("udp related tcp conn disconnected with read , %s -> %s", inconnRemoteAddr, raddr) (*inConn).Close() udpListener.Close() s.userConns.Remove(inconnRemoteAddr) @@ -572,6 +572,25 @@ func (s *Socks) proxyUDP(inConn *net.Conn, methodReq socks.MethodsRequest, reque } } }() + go func() { + for { + if _, err := (*inConn).Write([]byte{0x00}); err != nil { + raddr := "" + if outUDPConn != nil { + raddr = outUDPConn.RemoteAddr().String() + } + s.log.Printf("udp related tcp conn disconnected with write , %s -> %s", inconnRemoteAddr, raddr) + (*inConn).Close() + udpListener.Close() + s.userConns.Remove(inconnRemoteAddr) + if outUDPConn != nil { + outUDPConn.Close() + } + return + } + time.Sleep(time.Second * 5) + } + }() if *s.cfg.Parent != "" { outconn, err := s.getOutConn(nil, nil, "", false) if err != nil {