From ae56bb1edd2385df3d5c16f85608fd07f3cfdd2e Mon Sep 17 00:00:00 2001 From: arraykeys Date: Wed, 4 Oct 2017 12:44:51 +0800 Subject: [PATCH] no message --- services/http.go | 2 +- services/tcp.go | 2 +- services/tunnel_bridge.go | 2 +- services/tunnel_client.go | 2 +- services/tunnel_server.go | 2 +- utils/functions.go | 21 +++++++++------------ 6 files changed, 14 insertions(+), 17 deletions(-) diff --git a/services/http.go b/services/http.go index 621b5d8..a0d3e32 100644 --- a/services/http.go +++ b/services/http.go @@ -139,7 +139,7 @@ func (s *HTTP) OutToTCP(useProxy bool, address string, inConn *net.Conn, req *ut } else { outConn.Write(req.HeadBuf) } - utils.IoBind((*inConn), outConn, func(isSrcErr bool, err error) { + utils.IoBind((*inConn), outConn, func(err error) { log.Printf("conn %s - %s - %s -%s released [%s]", inAddr, inLocalAddr, outLocalAddr, outAddr, req.Host) utils.CloseConn(inConn) utils.CloseConn(&outConn) diff --git a/services/tcp.go b/services/tcp.go index 5e5ea2a..6bea35f 100644 --- a/services/tcp.go +++ b/services/tcp.go @@ -98,7 +98,7 @@ func (s *TCP) OutToTCP(inConn *net.Conn) (err error) { inLocalAddr := (*inConn).LocalAddr().String() outAddr := outConn.RemoteAddr().String() outLocalAddr := outConn.LocalAddr().String() - utils.IoBind((*inConn), outConn, func(isSrcErr bool, err error) { + utils.IoBind((*inConn), outConn, func(err error) { log.Printf("conn %s - %s - %s -%s released", inAddr, inLocalAddr, outLocalAddr, outAddr) utils.CloseConn(inConn) utils.CloseConn(&outConn) diff --git a/services/tunnel_bridge.go b/services/tunnel_bridge.go index 3c045ea..e7e575e 100644 --- a/services/tunnel_bridge.go +++ b/services/tunnel_bridge.go @@ -154,7 +154,7 @@ func (s *TunnelBridge) Start(args interface{}) (err error) { // log.Printf("%s conn %s from client released", key, ID) // hw.Close() // }) - utils.IoBind(serverConn, inConn, func(isSrcErr bool, err error) { + utils.IoBind(serverConn, inConn, func(err error) { // utils.IoBind(serverConn, inConn, func(isSrcErr bool, err error) { serverConn.Close() utils.CloseConn(&inConn) diff --git a/services/tunnel_client.go b/services/tunnel_client.go index 2fbdd91..189a8fd 100644 --- a/services/tunnel_client.go +++ b/services/tunnel_client.go @@ -224,7 +224,7 @@ func (s *TunnelClient) ServeConn(localAddr, ID string) { log.Printf("build connection error, err: %s", err) return } - utils.IoBind(inConn, outConn, func(isSrcErr bool, err error) { + utils.IoBind(inConn, outConn, func(err error) { log.Printf("conn %s released", ID) utils.CloseConn(&inConn) utils.CloseConn(&outConn) diff --git a/services/tunnel_server.go b/services/tunnel_server.go index 9965fba..e2cbb5c 100644 --- a/services/tunnel_server.go +++ b/services/tunnel_server.go @@ -95,7 +95,7 @@ func (s *TunnelServer) Start(args interface{}) (err error) { log.Printf("%s conn %s to bridge released", *s.cfg.Key, ID) hb.Close() }) - utils.IoBind(inConn, &hb, func(isSrcErr bool, err error) { + utils.IoBind(inConn, &hb, func(err error) { //utils.IoBind(inConn, outConn, func(isSrcErr bool, err error) { utils.CloseConn(&outConn) utils.CloseConn(&inConn) diff --git a/utils/functions.go b/utils/functions.go index 4f9eff0..a214ca0 100755 --- a/utils/functions.go +++ b/utils/functions.go @@ -22,7 +22,7 @@ import ( "time" ) -func IoBind(dst io.ReadWriter, src io.ReadWriter, fn func(isSrcErr bool, err error), cfn func(count int, isPositive bool), bytesPreSec float64) { +func IoBind(dst io.ReadWriter, src io.ReadWriter, fn func(err error), cfn func(count int, isPositive bool), bytesPreSec float64) { var one = &sync.Once{} go func() { defer func() { @@ -31,22 +31,21 @@ func IoBind(dst io.ReadWriter, src io.ReadWriter, fn func(isSrcErr bool, err err } }() var err error - var isSrcErr bool if bytesPreSec > 0 { newreader := NewReader(src) newreader.SetRateLimit(bytesPreSec) - _, isSrcErr, err = ioCopy(dst, newreader, func(c int) { + _, err = ioCopy(dst, newreader, func(c int) { cfn(c, false) }) } else { - _, isSrcErr, err = ioCopy(dst, src, func(c int) { + _, err = ioCopy(dst, src, func(c int) { cfn(c, false) }) } if err != nil { one.Do(func() { - fn(isSrcErr, err) + fn(err) }) } }() @@ -57,26 +56,25 @@ func IoBind(dst io.ReadWriter, src io.ReadWriter, fn func(isSrcErr bool, err err } }() var err error - var isSrcErr bool if bytesPreSec > 0 { newReader := NewReader(dst) newReader.SetRateLimit(bytesPreSec) - _, isSrcErr, err = ioCopy(src, newReader, func(c int) { + _, err = ioCopy(src, newReader, func(c int) { cfn(c, true) }) } else { - _, isSrcErr, err = ioCopy(src, dst, func(c int) { + _, err = ioCopy(src, dst, func(c int) { cfn(c, true) }) } if err != nil { one.Do(func() { - fn(isSrcErr, err) + fn(err) }) } }() } -func ioCopy(dst io.Writer, src io.Reader, fn ...func(count int)) (written int64, isSrcErr bool, err error) { +func ioCopy(dst io.Writer, src io.Reader, fn ...func(count int)) (written int64, err error) { buf := make([]byte, 32*1024) for { nr, er := src.Read(buf) @@ -99,11 +97,10 @@ func ioCopy(dst io.Writer, src io.Reader, fn ...func(count int)) (written int64, } if er != nil { err = er - isSrcErr = true break } } - return written, isSrcErr, err + return written, err } func TlsConnectHost(host string, timeout int, certBytes, keyBytes []byte) (conn tls.Conn, err error) { h := strings.Split(host, ":")