Signed-off-by: arraykeys@gmail.com <arraykeys@gmail.com>

This commit is contained in:
arraykeys@gmail.com
2017-10-20 10:39:37 +08:00
parent 3440af51b0
commit e9b46d38e3
2 changed files with 20 additions and 9 deletions

View File

@ -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

View File

@ -393,6 +393,9 @@ 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
tryCount := 0
maxTryCount := 3
for {
if *s.cfg.Always { if *s.cfg.Always {
outConn, err = s.getOutConn(methodReq.Bytes(), request.Bytes(), request.Addr()) outConn, err = s.getOutConn(methodReq.Bytes(), request.Bytes(), request.Addr())
} else { } else {
@ -408,6 +411,13 @@ func (s *Socks) proxyTCP(inConn *net.Conn, methodReq socks.MethodsRequest, reque
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 {
log.Printf("get out conn fail,%s,retrying...", err)
}
}
if err != nil { if err != nil {
log.Printf("get out conn fail,%s", err) log.Printf("get out conn fail,%s", err)
request.TCPReply(socks.REP_NETWOR_UNREACHABLE) request.TCPReply(socks.REP_NETWOR_UNREACHABLE)