Signed-off-by: arraykeys@gmail.com <arraykeys@gmail.com>
This commit is contained in:
@ -31,6 +31,7 @@ Proxy是golang实现的高性能http,https,websocket,tcp,udp,socks5代理服务
|
|||||||
- [v3.0手册](https://github.com/snail007/goproxy/tree/v3.0)
|
- [v3.0手册](https://github.com/snail007/goproxy/tree/v3.0)
|
||||||
- [v2.x手册](https://github.com/snail007/goproxy/tree/v2.2)
|
- [v2.x手册](https://github.com/snail007/goproxy/tree/v2.2)
|
||||||
|
|
||||||
|
* auto-gen TOC:
|
||||||
{:toc}
|
{:toc}
|
||||||
|
|
||||||
### Fast Start
|
### Fast Start
|
||||||
|
|||||||
@ -393,19 +393,29 @@ func (s *Socks) proxyTCP(inConn *net.Conn, methodReq socks.MethodsRequest, reque
|
|||||||
defer utils.CloseConn(&outConn)
|
defer utils.CloseConn(&outConn)
|
||||||
var err interface{}
|
var err interface{}
|
||||||
useProxy := true
|
useProxy := true
|
||||||
if *s.cfg.Always {
|
tryCount := 0
|
||||||
outConn, err = s.getOutConn(methodReq.Bytes(), request.Bytes(), request.Addr())
|
maxTryCount := 3
|
||||||
} else {
|
for {
|
||||||
if *s.cfg.Parent != "" {
|
if *s.cfg.Always {
|
||||||
s.checker.Add(request.Addr(), true, "", "", nil)
|
outConn, err = s.getOutConn(methodReq.Bytes(), request.Bytes(), request.Addr())
|
||||||
useProxy, _, _ = s.checker.IsBlocked(request.Addr())
|
} else {
|
||||||
if useProxy {
|
if *s.cfg.Parent != "" {
|
||||||
outConn, err = s.getOutConn(methodReq.Bytes(), request.Bytes(), request.Addr())
|
s.checker.Add(request.Addr(), true, "", "", nil)
|
||||||
|
useProxy, _, _ = s.checker.IsBlocked(request.Addr())
|
||||||
|
if useProxy {
|
||||||
|
outConn, err = s.getOutConn(methodReq.Bytes(), request.Bytes(), request.Addr())
|
||||||
|
} else {
|
||||||
|
outConn, err = utils.ConnectHost(request.Addr(), *s.cfg.Timeout)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
outConn, err = utils.ConnectHost(request.Addr(), *s.cfg.Timeout)
|
outConn, err = utils.ConnectHost(request.Addr(), *s.cfg.Timeout)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
tryCount++
|
||||||
|
if err == nil || tryCount > maxTryCount {
|
||||||
|
break
|
||||||
} else {
|
} else {
|
||||||
outConn, err = utils.ConnectHost(request.Addr(), *s.cfg.Timeout)
|
log.Printf("get out conn fail,%s,retrying...", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user