From 2cc81219b179f7bf0bb582850a0e7568ffda0346 Mon Sep 17 00:00:00 2001 From: 9seconds Date: Fri, 12 Mar 2021 17:00:52 +0300 Subject: [PATCH] Use HTTP timeout from config --- cli/base.go | 7 ++++--- mtglib/network/init.go | 5 ++--- mtglib/network/network.go | 8 ++++++-- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/cli/base.go b/cli/base.go index 3f508b1..4cf9d6d 100644 --- a/cli/base.go +++ b/cli/base.go @@ -40,6 +40,7 @@ func (b *base) ReadConfig(path, version string) error { func (b *base) makeNetwork(conf *config.Config, version string) (network.Network, error) { tcpTimeout := conf.Network.Timeout.TCP.Value(network.DefaultTimeout) 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() bufferSize := conf.TCPBuffer.Value(network.DefaultBufferSize) userAgent := "mtg/" + version @@ -59,14 +60,14 @@ func (b *base) makeNetwork(conf *config.Config, version string) (network.Network switch len(proxyURLs) { case 0: - return network.NewNetwork(baseDialer, userAgent, dohIP, idleTimeout) + return network.NewNetwork(baseDialer, userAgent, dohIP, httpTimeout, idleTimeout) case 1: socksDialer, err := network.NewSocks5Dialer(baseDialer, proxyURLs[0]) if err != nil { 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) @@ -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 network.NewNetwork(socksDialer, userAgent, dohIP, idleTimeout) + return network.NewNetwork(socksDialer, userAgent, dohIP, httpTimeout, idleTimeout) } diff --git a/mtglib/network/init.go b/mtglib/network/init.go index e66ce3b..9378435 100644 --- a/mtglib/network/init.go +++ b/mtglib/network/init.go @@ -11,6 +11,7 @@ import ( const ( DefaultTimeout = 10 * time.Second DefaultIdleTimeout = time.Minute + DefaultHTTPTimeout = 10 * time.Second DefaultBufferSize = 4096 ProxyDialerOpenThreshold = 5 @@ -18,9 +19,7 @@ const ( ProxyDialerResetFailuresTimeout = 10 * time.Second DefaultDOHHostname = "9.9.9.9" - - DNSTimeout = 5 * time.Second - HTTPTimeout = 10 * time.Second + DNSTimeout = 5 * time.Second ) var ( diff --git a/mtglib/network/network.go b/mtglib/network/network.go index b4b0b71..f5fc8ed 100644 --- a/mtglib/network/network.go +++ b/mtglib/network/network.go @@ -27,6 +27,7 @@ type network struct { dialer Dialer dns doh.Resolver idleTimeout time.Duration + httpTimeout time.Duration userAgent string } @@ -123,10 +124,12 @@ func (n *network) MakeHTTPClient(dialFunc DialFunc) *http.Client { 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 { case idleTimeout < 0: 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{ dialer: dialer, idleTimeout: idleTimeout, + httpTimeout: httpTimeout, userAgent: userAgent, dns: doh.Resolver{ Host: dohHostname,