@@ -30,36 +30,57 @@ const (
30
30
// DefaultUserAgent contains basic user agent that will be used in queries.
31
31
DefaultUserAgent = AppName + "/" + AppVersion
32
32
33
- // defaultHTTPTimeout represents default timeout (in seconds) for HTTP
33
+ // defaultHTTPTimeout represents the default timeout (in seconds) for HTTP
34
34
// requests.
35
- defaultHTTPTimeout = 40
35
+ defaultHTTPTimeout = 60
36
36
37
- // defaultDialTimeout represents default timeout (in seconds) for HTTP
37
+ // defaultDialTimeout represents the default timeout (in seconds) for HTTP
38
38
// connection establishments.
39
- defaultDialTimeout = 5
39
+ defaultDialTimeout = 40
40
40
41
- // defaultTLSHandshakeTimeout represents default timeout (in seconds) for
42
- // TSL handshake timeout.
43
- defaultTLSHandshakeTimeout = 5
41
+ // defaultKeepalive represents the default keep-alive period for an active
42
+ // network connection.
43
+ defaultKeepaliveTimeout = 40
44
+
45
+ // defaultMaxIdleConns represents the maximum number of idle (keep-alive)
46
+ // connections.
47
+ defaultMaxIdleConns = 100
48
+
49
+ // defaultIdleConnTimeout represents the maximum amount of time an idle
50
+ // (keep-alive) connection will remain idle before closing itself.
51
+ defaultIdleConnTimeout = 100
52
+
53
+ // defaultTLSHandshakeTimeout represents the default timeout (in seconds)
54
+ // for TLS handshake.
55
+ defaultTLSHandshakeTimeout = 30
56
+
57
+ // defaultExpectContinueTimeout represents the default amount of time to
58
+ // wait for a server's first response headers.
59
+ defaultExpectContinueTimeout = 1
44
60
)
45
61
46
- // NewHTTPClient returns a reference to an initialized HTTP client with
47
- // configured timeouts.
62
+ // NewHTTPClient returns a reference to an initialized configured HTTP client.
48
63
func NewHTTPClient () * http.Client {
49
64
return & http.Client {
50
65
Timeout : time .Second * defaultHTTPTimeout ,
51
66
Transport : newHTTPTransport (),
52
67
}
53
68
}
54
69
55
- // newHTTPTransport returns a reference to an initialized HTTP transport with
56
- // configured timeouts .
70
+ // newHTTPTransport returns a reference to an initialized configured HTTP
71
+ // transport .
57
72
func newHTTPTransport () * http.Transport {
58
73
return & http.Transport {
59
- Dial : (& net.Dialer {
60
- Timeout : time .Second * defaultDialTimeout ,
61
- }).Dial ,
62
- TLSHandshakeTimeout : time .Second * defaultTLSHandshakeTimeout ,
74
+ Proxy : http .ProxyFromEnvironment ,
75
+ DialContext : (& net.Dialer {
76
+ Timeout : defaultDialTimeout * time .Second ,
77
+ KeepAlive : defaultKeepaliveTimeout * time .Second ,
78
+ DualStack : true ,
79
+ }).DialContext ,
80
+ MaxIdleConns : defaultMaxIdleConns ,
81
+ IdleConnTimeout : defaultIdleConnTimeout * time .Second ,
82
+ TLSHandshakeTimeout : defaultTLSHandshakeTimeout * time .Second ,
83
+ ExpectContinueTimeout : defaultExpectContinueTimeout * time .Second ,
63
84
}
64
85
}
65
86
0 commit comments