diff --git a/services/http.go b/services/http.go index 2e04a1e..eea3267 100644 --- a/services/http.go +++ b/services/http.go @@ -239,11 +239,11 @@ func (s *HTTP) OutToTCP(useProxy bool, address string, inConn *net.Conn, req *ut } utils.IoBind((*inConn), outConn, func(err error) { - log.Printf("conn %s - %s - %s - %s released [%s]", inAddr, inLocalAddr, outLocalAddr, outAddr, req.Host) + log.Printf("conn %s - %s released [%s]", inAddr, outAddr, req.Host) utils.CloseConn(inConn) utils.CloseConn(&outConn) }) - log.Printf("conn %s - %s - %s - %s connected [%s]", inAddr, inLocalAddr, outLocalAddr, outAddr, req.Host) + log.Printf("conn %s - %s connected [%s]", inAddr, outAddr, req.Host) return } diff --git a/services/socks.go b/services/socks.go index c4e50f8..8dbe6f9 100644 --- a/services/socks.go +++ b/services/socks.go @@ -431,11 +431,11 @@ func (s *Socks) proxyTCP(inConn *net.Conn, methodReq socks.MethodsRequest, reque request.TCPReply(socks.REP_SUCCESS) inAddr := (*inConn).RemoteAddr().String() - inLocalAddr := (*inConn).LocalAddr().String() + //inLocalAddr := (*inConn).LocalAddr().String() - log.Printf("conn %s - %s connected [%s]", inAddr, inLocalAddr, request.Addr()) + log.Printf("conn %s - %s connected", inAddr, request.Addr()) utils.IoBind(*inConn, outConn, func(err error) { - log.Printf("conn %s - %s released [%s]", inAddr, inLocalAddr, request.Addr()) + log.Printf("conn %s - %s released", inAddr, request.Addr()) utils.CloseConn(inConn) utils.CloseConn(&outConn) }) diff --git a/services/tcp.go b/services/tcp.go index 758046e..a11b4f2 100644 --- a/services/tcp.go +++ b/services/tcp.go @@ -102,15 +102,15 @@ func (s *TCP) OutToTCP(inConn *net.Conn) (err error) { return } inAddr := (*inConn).RemoteAddr().String() - inLocalAddr := (*inConn).LocalAddr().String() + //inLocalAddr := (*inConn).LocalAddr().String() outAddr := outConn.RemoteAddr().String() - outLocalAddr := outConn.LocalAddr().String() + //outLocalAddr := outConn.LocalAddr().String() utils.IoBind((*inConn), outConn, func(err error) { - log.Printf("conn %s - %s - %s - %s released", inAddr, inLocalAddr, outLocalAddr, outAddr) + log.Printf("conn %s - %s released", inAddr, outAddr) utils.CloseConn(inConn) utils.CloseConn(&outConn) }) - log.Printf("conn %s - %s - %s - %s connected", inAddr, inLocalAddr, outLocalAddr, outAddr) + log.Printf("conn %s - %s connected", inAddr, outAddr) return } func (s *TCP) OutToUDP(inConn *net.Conn) (err error) { diff --git a/utils/functions.go b/utils/functions.go index c3a331c..eabeab9 100755 --- a/utils/functions.go +++ b/utils/functions.go @@ -38,8 +38,8 @@ func IoBind(dst io.ReadWriter, src io.ReadWriter, fn func(err error)) { log.Printf("IoBind crashed , err : %s , \ntrace:%s", e, string(debug.Stack())) } }() - - _, e := io.Copy(dst, src) + e := ioCopy(dst, src) + //_, e := io.Copy(dst, src) e1 <- e }() go func() { @@ -48,8 +48,8 @@ func IoBind(dst io.ReadWriter, src io.ReadWriter, fn func(err error)) { log.Printf("IoBind crashed , err : %s , \ntrace:%s", e, string(debug.Stack())) } }() - - _, e := io.Copy(src, dst) + //_, e := io.Copy(src, dst) + e := ioCopy(src, dst) e2 <- e }() var err error @@ -62,7 +62,21 @@ func IoBind(dst io.ReadWriter, src io.ReadWriter, fn func(err error)) { fn(err) }() } - +func ioCopy(dst io.ReadWriter, src io.ReadWriter) (err error) { + buf := make([]byte, 32*1024) + n := 0 + for { + n, err = src.Read(buf) + if n > 0 { + if _, e := dst.Write(buf[0:n]); e != nil { + return e + } + } + if err != nil { + return + } + } +} func TlsConnectHost(host string, timeout int, certBytes, keyBytes []byte) (conn tls.Conn, err error) { h := strings.Split(host, ":") port, _ := strconv.Atoi(h[1])