diff --git a/proxy/socks/tcp.go b/proxy/socks/tcp.go index 577e59b..c73f48f 100644 --- a/proxy/socks/tcp.go +++ b/proxy/socks/tcp.go @@ -51,16 +51,22 @@ func (h *tcpHandler) relay(localConn, remoteConn net.Conn) { // Up Link go func() { - io.Copy(remoteConn, localConn) - tcpCloseRead(localConn) - tcpCloseWrite(remoteConn) + if _, err := io.Copy(remoteConn, localConn); err != nil { + closeOnce() + } else { + tcpCloseRead(localConn) + tcpCloseWrite(remoteConn) + } wg.Done() }() // Down Link - io.Copy(localConn, remoteConn) - tcpCloseRead(remoteConn) - tcpCloseWrite(localConn) + if _, err := io.Copy(localConn, remoteConn); err != nil { + closeOnce() + } else { + tcpCloseRead(remoteConn) + tcpCloseWrite(localConn) + } wg.Wait() // Wait for Up Link done diff --git a/proxy/socks/utils.go b/proxy/socks/utils.go index 21b7386..316c3d7 100644 --- a/proxy/socks/utils.go +++ b/proxy/socks/utils.go @@ -3,8 +3,6 @@ package socks import ( "net" "time" - - "github.com/xjasonlyu/tun2socks/common/log" ) type duplexConn interface { @@ -15,14 +13,12 @@ type duplexConn interface { func tcpCloseRead(conn net.Conn) { if c, ok := conn.(duplexConn); ok { - log.Warnf("ok!----") c.CloseRead() } } func tcpCloseWrite(conn net.Conn) { if c, ok := conn.(duplexConn); ok { - log.Warnf("ok!++++") c.CloseWrite() } }