Use HTTP timeout from config

This commit is contained in:
9seconds
2021-03-12 17:00:52 +03:00
parent 1f862027af
commit 2cc81219b1
3 changed files with 12 additions and 8 deletions
+4 -3
View File
@@ -40,6 +40,7 @@ func (b *base) ReadConfig(path, version string) error {
func (b *base) makeNetwork(conf *config.Config, version string) (network.Network, error) { func (b *base) makeNetwork(conf *config.Config, version string) (network.Network, error) {
tcpTimeout := conf.Network.Timeout.TCP.Value(network.DefaultTimeout) tcpTimeout := conf.Network.Timeout.TCP.Value(network.DefaultTimeout)
idleTimeout := conf.Network.Timeout.Idle.Value(network.DefaultIdleTimeout) idleTimeout := conf.Network.Timeout.Idle.Value(network.DefaultIdleTimeout)
httpTimeout := conf.Network.Timeout.HTTP.Value(network.DefaultHTTPTimeout)
dohIP := conf.Network.DOHIP.Value(net.ParseIP(network.DefaultDOHHostname)).String() dohIP := conf.Network.DOHIP.Value(net.ParseIP(network.DefaultDOHHostname)).String()
bufferSize := conf.TCPBuffer.Value(network.DefaultBufferSize) bufferSize := conf.TCPBuffer.Value(network.DefaultBufferSize)
userAgent := "mtg/" + version userAgent := "mtg/" + version
@@ -59,14 +60,14 @@ func (b *base) makeNetwork(conf *config.Config, version string) (network.Network
switch len(proxyURLs) { switch len(proxyURLs) {
case 0: case 0:
return network.NewNetwork(baseDialer, userAgent, dohIP, idleTimeout) return network.NewNetwork(baseDialer, userAgent, dohIP, httpTimeout, idleTimeout)
case 1: case 1:
socksDialer, err := network.NewSocks5Dialer(baseDialer, proxyURLs[0]) socksDialer, err := network.NewSocks5Dialer(baseDialer, proxyURLs[0])
if err != nil { if err != nil {
return nil, fmt.Errorf("cannot build socks5 dialer: %w", err) return nil, fmt.Errorf("cannot build socks5 dialer: %w", err)
} }
return network.NewNetwork(socksDialer, userAgent, dohIP, idleTimeout) return network.NewNetwork(socksDialer, userAgent, dohIP, httpTimeout, idleTimeout)
} }
socksDialer, err := network.NewLoadBalancedSocks5Dialer(baseDialer, proxyURLs) socksDialer, err := network.NewLoadBalancedSocks5Dialer(baseDialer, proxyURLs)
@@ -74,5 +75,5 @@ func (b *base) makeNetwork(conf *config.Config, version string) (network.Network
return nil, fmt.Errorf("cannot build socks5 dialer: %w", err) return nil, fmt.Errorf("cannot build socks5 dialer: %w", err)
} }
return network.NewNetwork(socksDialer, userAgent, dohIP, idleTimeout) return network.NewNetwork(socksDialer, userAgent, dohIP, httpTimeout, idleTimeout)
} }
+2 -3
View File
@@ -11,6 +11,7 @@ import (
const ( const (
DefaultTimeout = 10 * time.Second DefaultTimeout = 10 * time.Second
DefaultIdleTimeout = time.Minute DefaultIdleTimeout = time.Minute
DefaultHTTPTimeout = 10 * time.Second
DefaultBufferSize = 4096 DefaultBufferSize = 4096
ProxyDialerOpenThreshold = 5 ProxyDialerOpenThreshold = 5
@@ -18,9 +19,7 @@ const (
ProxyDialerResetFailuresTimeout = 10 * time.Second ProxyDialerResetFailuresTimeout = 10 * time.Second
DefaultDOHHostname = "9.9.9.9" DefaultDOHHostname = "9.9.9.9"
DNSTimeout = 5 * time.Second
DNSTimeout = 5 * time.Second
HTTPTimeout = 10 * time.Second
) )
var ( var (
+6 -2
View File
@@ -27,6 +27,7 @@ type network struct {
dialer Dialer dialer Dialer
dns doh.Resolver dns doh.Resolver
idleTimeout time.Duration idleTimeout time.Duration
httpTimeout time.Duration
userAgent string userAgent string
} }
@@ -123,10 +124,12 @@ func (n *network) MakeHTTPClient(dialFunc DialFunc) *http.Client {
dialFunc = n.DialContext dialFunc = n.DialContext
} }
return makeHTTPClient(n.userAgent, HTTPTimeout, dialFunc) return makeHTTPClient(n.userAgent, n.httpTimeout, dialFunc)
} }
func NewNetwork(dialer Dialer, userAgent, dohHostname string, idleTimeout time.Duration) (Network, error) { func NewNetwork(dialer Dialer,
userAgent, dohHostname string,
httpTimeout, idleTimeout time.Duration) (Network, error) {
switch { switch {
case idleTimeout < 0: case idleTimeout < 0:
return nil, fmt.Errorf("timeout should be positive number %s", idleTimeout) return nil, fmt.Errorf("timeout should be positive number %s", idleTimeout)
@@ -141,6 +144,7 @@ func NewNetwork(dialer Dialer, userAgent, dohHostname string, idleTimeout time.D
return &network{ return &network{
dialer: dialer, dialer: dialer,
idleTimeout: idleTimeout, idleTimeout: idleTimeout,
httpTimeout: httpTimeout,
userAgent: userAgent, userAgent: userAgent,
dns: doh.Resolver{ dns: doh.Resolver{
Host: dohHostname, Host: dohHostname,