mirror of https://github.com/fatedier/frp
				
				
				
			client: add dial_server_timeout (#2805)
							parent
							
								
									ddc1e163c4
								
							
						
					
					
						commit
						10100c28d9
					
				| 
						 | 
				
			
			@ -251,6 +251,7 @@ func (ctl *Control) connectServer() (conn net.Conn, err error) {
 | 
			
		|||
		}
 | 
			
		||||
		dialOptions = append(dialOptions,
 | 
			
		||||
			libdial.WithProtocol(protocol),
 | 
			
		||||
			libdial.WithTimeout(time.Duration(ctl.clientCfg.DialServerTimeout)*time.Second),
 | 
			
		||||
			libdial.WithProxy(proxyType, addr),
 | 
			
		||||
			libdial.WithProxyAuth(auth),
 | 
			
		||||
			libdial.WithTLSConfig(tlsConfig),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -787,7 +787,10 @@ func HandleTCPWorkConnection(ctx context.Context, localInfo *config.LocalSvrConf
 | 
			
		|||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	localConn, err := libdial.Dial(net.JoinHostPort(localInfo.LocalIP, strconv.Itoa(localInfo.LocalPort)))
 | 
			
		||||
	localConn, err := libdial.Dial(
 | 
			
		||||
		net.JoinHostPort(localInfo.LocalIP, strconv.Itoa(localInfo.LocalPort)),
 | 
			
		||||
		libdial.WithTimeout(10*time.Second),
 | 
			
		||||
	)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		workConn.Close()
 | 
			
		||||
		xl.Error("connect to local service [%s:%d] error: %v", localInfo.LocalIP, localInfo.LocalPort, err)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -245,6 +245,7 @@ func (svr *Service) login() (conn net.Conn, session *fmux.Session, err error) {
 | 
			
		|||
	}
 | 
			
		||||
	dialOptions = append(dialOptions,
 | 
			
		||||
		libdial.WithProtocol(protocol),
 | 
			
		||||
		libdial.WithTimeout(time.Duration(svr.cfg.DialServerTimeout)*time.Second),
 | 
			
		||||
		libdial.WithProxy(proxyType, addr),
 | 
			
		||||
		libdial.WithProxyAuth(auth),
 | 
			
		||||
		libdial.WithTLSConfig(tlsConfig),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,6 +6,9 @@
 | 
			
		|||
server_addr = 0.0.0.0
 | 
			
		||||
server_port = 7000
 | 
			
		||||
 | 
			
		||||
# The maximum amount of time a dial to server will wait for a connect to complete. Default value is 10 seconds.
 | 
			
		||||
# dial_server_timeout = 10
 | 
			
		||||
 | 
			
		||||
# if you want to connect frps by http proxy or socks5 proxy or ntlm proxy, you can set http_proxy here or in global environment variables
 | 
			
		||||
# it only works when protocol is tcp
 | 
			
		||||
# http_proxy = http://user:passwd@192.168.1.128:8080
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								go.mod
								
								
								
								
							
							
						
						
									
										2
									
								
								go.mod
								
								
								
								
							| 
						 | 
				
			
			@ -6,7 +6,7 @@ require (
 | 
			
		|||
	github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5
 | 
			
		||||
	github.com/coreos/go-oidc v2.2.1+incompatible
 | 
			
		||||
	github.com/fatedier/beego v0.0.0-20171024143340-6c6a4f5bd5eb
 | 
			
		||||
	github.com/fatedier/golib v0.1.1-0.20220119075718-78e5cf8c00ee
 | 
			
		||||
	github.com/fatedier/golib v0.1.1-0.20220218075713-264f72dfbfd9
 | 
			
		||||
	github.com/fatedier/kcp-go v2.0.4-0.20190803094908-fe8645b0a904+incompatible
 | 
			
		||||
	github.com/go-playground/validator/v10 v10.6.1
 | 
			
		||||
	github.com/google/uuid v1.2.0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										6
									
								
								go.sum
								
								
								
								
							
							
						
						
									
										6
									
								
								go.sum
								
								
								
								
							| 
						 | 
				
			
			@ -88,8 +88,10 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7
 | 
			
		|||
github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
 | 
			
		||||
github.com/fatedier/beego v0.0.0-20171024143340-6c6a4f5bd5eb h1:wCrNShQidLmvVWn/0PikGmpdP0vtQmnvyRg3ZBEhczw=
 | 
			
		||||
github.com/fatedier/beego v0.0.0-20171024143340-6c6a4f5bd5eb/go.mod h1:wx3gB6dbIfBRcucp94PI9Bt3I0F2c/MyNEWuhzpWiwk=
 | 
			
		||||
github.com/fatedier/golib v0.1.1-0.20220119075718-78e5cf8c00ee h1:iS0wlj2uZPxh3pciAf/HTzi88Kqu7DPh1jNKgJaFhtI=
 | 
			
		||||
github.com/fatedier/golib v0.1.1-0.20220119075718-78e5cf8c00ee/go.mod h1:fLV0TLwHqrnB/L3jbNl67Gn6PCLggDGHniX1wLrA2Qo=
 | 
			
		||||
github.com/fatedier/golib v0.1.1-0.20220218073251-9509a597216b h1:5r5/G3NFsFK+7svxvxZYA8yy8Ubs4hWIq+QYYMgEBe8=
 | 
			
		||||
github.com/fatedier/golib v0.1.1-0.20220218073251-9509a597216b/go.mod h1:fLV0TLwHqrnB/L3jbNl67Gn6PCLggDGHniX1wLrA2Qo=
 | 
			
		||||
github.com/fatedier/golib v0.1.1-0.20220218075713-264f72dfbfd9 h1:AOGf9Z1ri+3MiyGIAYXe+shEXx6/uVGJlufb6ZfnZls=
 | 
			
		||||
github.com/fatedier/golib v0.1.1-0.20220218075713-264f72dfbfd9/go.mod h1:fLV0TLwHqrnB/L3jbNl67Gn6PCLggDGHniX1wLrA2Qo=
 | 
			
		||||
github.com/fatedier/kcp-go v2.0.4-0.20190803094908-fe8645b0a904+incompatible h1:ssXat9YXFvigNge/IkkZvFMn8yeYKFX+uI6wn2mLJ74=
 | 
			
		||||
github.com/fatedier/kcp-go v2.0.4-0.20190803094908-fe8645b0a904+incompatible/go.mod h1:YpCOaxj7vvMThhIQ9AfTOPW2sfztQR5WDfs7AflSy4s=
 | 
			
		||||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,6 +38,8 @@ type ClientCommonConf struct {
 | 
			
		|||
	// ServerPort specifies the port to connect to the server on. By default,
 | 
			
		||||
	// this value is 7000.
 | 
			
		||||
	ServerPort int `ini:"server_port" json:"server_port"`
 | 
			
		||||
	// The maximum amount of time a dial to server will wait for a connect to complete.
 | 
			
		||||
	DialServerTimeout int64 `ini:"dial_server_timeout" json:"dial_server_timeout"`
 | 
			
		||||
	// ConnectServerLocalIP specifies the address of the client bind when it connect to server.
 | 
			
		||||
	// By default, this value is empty.
 | 
			
		||||
	// this value only use in TCP/Websocket protocol. Not support in KCP protocol.
 | 
			
		||||
| 
						 | 
				
			
			@ -157,6 +159,7 @@ func GetDefaultClientConf() ClientCommonConf {
 | 
			
		|||
		ClientConfig:            auth.GetDefaultClientConf(),
 | 
			
		||||
		ServerAddr:              "0.0.0.0",
 | 
			
		||||
		ServerPort:              7000,
 | 
			
		||||
		DialServerTimeout:       10,
 | 
			
		||||
		HTTPProxy:               os.Getenv("http_proxy"),
 | 
			
		||||
		LogFile:                 "console",
 | 
			
		||||
		LogWay:                  "console",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -261,6 +261,7 @@ func Test_LoadClientCommonConf(t *testing.T) {
 | 
			
		|||
		},
 | 
			
		||||
		ServerAddr:              "0.0.0.9",
 | 
			
		||||
		ServerPort:              7009,
 | 
			
		||||
		DialServerTimeout:       10,
 | 
			
		||||
		HTTPProxy:               "http://user:passwd@192.168.1.128:8080",
 | 
			
		||||
		LogFile:                 "./frpc.log9",
 | 
			
		||||
		LogWay:                  "file",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -268,5 +268,4 @@ var _ = Describe("[Feature: Client-Server]", func() {
 | 
			
		|||
			})
 | 
			
		||||
		}
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
})
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue