Просмотр исходного кода

Use HTTP timeout from config

tags/v2.0.0-rc1
9seconds 5 лет назад
Родитель
Сommit
2cc81219b1
3 измененных файлов: 12 добавлений и 8 удалений
  1. 4
    3
      cli/base.go
  2. 2
    3
      mtglib/network/init.go
  3. 6
    2
      mtglib/network/network.go

+ 4
- 3
cli/base.go Просмотреть файл

@@ -40,6 +40,7 @@ func (b *base) ReadConfig(path, version string) error {
40 40
 func (b *base) makeNetwork(conf *config.Config, version string) (network.Network, error) {
41 41
 	tcpTimeout := conf.Network.Timeout.TCP.Value(network.DefaultTimeout)
42 42
 	idleTimeout := conf.Network.Timeout.Idle.Value(network.DefaultIdleTimeout)
43
+	httpTimeout := conf.Network.Timeout.HTTP.Value(network.DefaultHTTPTimeout)
43 44
 	dohIP := conf.Network.DOHIP.Value(net.ParseIP(network.DefaultDOHHostname)).String()
44 45
 	bufferSize := conf.TCPBuffer.Value(network.DefaultBufferSize)
45 46
 	userAgent := "mtg/" + version
@@ -59,14 +60,14 @@ func (b *base) makeNetwork(conf *config.Config, version string) (network.Network
59 60
 
60 61
 	switch len(proxyURLs) {
61 62
 	case 0:
62
-		return network.NewNetwork(baseDialer, userAgent, dohIP, idleTimeout)
63
+		return network.NewNetwork(baseDialer, userAgent, dohIP, httpTimeout, idleTimeout)
63 64
 	case 1:
64 65
 		socksDialer, err := network.NewSocks5Dialer(baseDialer, proxyURLs[0])
65 66
 		if err != nil {
66 67
 			return nil, fmt.Errorf("cannot build socks5 dialer: %w", err)
67 68
 		}
68 69
 
69
-		return network.NewNetwork(socksDialer, userAgent, dohIP, idleTimeout)
70
+		return network.NewNetwork(socksDialer, userAgent, dohIP, httpTimeout, idleTimeout)
70 71
 	}
71 72
 
72 73
 	socksDialer, err := network.NewLoadBalancedSocks5Dialer(baseDialer, proxyURLs)
@@ -74,5 +75,5 @@ func (b *base) makeNetwork(conf *config.Config, version string) (network.Network
74 75
 		return nil, fmt.Errorf("cannot build socks5 dialer: %w", err)
75 76
 	}
76 77
 
77
-	return network.NewNetwork(socksDialer, userAgent, dohIP, idleTimeout)
78
+	return network.NewNetwork(socksDialer, userAgent, dohIP, httpTimeout, idleTimeout)
78 79
 }

+ 2
- 3
mtglib/network/init.go Просмотреть файл

@@ -11,6 +11,7 @@ import (
11 11
 const (
12 12
 	DefaultTimeout     = 10 * time.Second
13 13
 	DefaultIdleTimeout = time.Minute
14
+	DefaultHTTPTimeout = 10 * time.Second
14 15
 	DefaultBufferSize  = 4096
15 16
 
16 17
 	ProxyDialerOpenThreshold        = 5
@@ -18,9 +19,7 @@ const (
18 19
 	ProxyDialerResetFailuresTimeout = 10 * time.Second
19 20
 
20 21
 	DefaultDOHHostname = "9.9.9.9"
21
-
22
-	DNSTimeout  = 5 * time.Second
23
-	HTTPTimeout = 10 * time.Second
22
+	DNSTimeout         = 5 * time.Second
24 23
 )
25 24
 
26 25
 var (

+ 6
- 2
mtglib/network/network.go Просмотреть файл

@@ -27,6 +27,7 @@ type network struct {
27 27
 	dialer      Dialer
28 28
 	dns         doh.Resolver
29 29
 	idleTimeout time.Duration
30
+	httpTimeout time.Duration
30 31
 	userAgent   string
31 32
 }
32 33
 
@@ -123,10 +124,12 @@ func (n *network) MakeHTTPClient(dialFunc DialFunc) *http.Client {
123 124
 		dialFunc = n.DialContext
124 125
 	}
125 126
 
126
-	return makeHTTPClient(n.userAgent, HTTPTimeout, dialFunc)
127
+	return makeHTTPClient(n.userAgent, n.httpTimeout, dialFunc)
127 128
 }
128 129
 
129
-func NewNetwork(dialer Dialer, userAgent, dohHostname string, idleTimeout time.Duration) (Network, error) {
130
+func NewNetwork(dialer Dialer,
131
+	userAgent, dohHostname string,
132
+	httpTimeout, idleTimeout time.Duration) (Network, error) {
130 133
 	switch {
131 134
 	case idleTimeout < 0:
132 135
 		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
141 144
 	return &network{
142 145
 		dialer:      dialer,
143 146
 		idleTimeout: idleTimeout,
147
+		httpTimeout: httpTimeout,
144 148
 		userAgent:   userAgent,
145 149
 		dns: doh.Resolver{
146 150
 			Host:       dohHostname,

Загрузка…
Отмена
Сохранить