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

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
 func (b *base) makeNetwork(conf *config.Config, version string) (network.Network, error) {
40
 func (b *base) makeNetwork(conf *config.Config, version string) (network.Network, error) {
41
 	tcpTimeout := conf.Network.Timeout.TCP.Value(network.DefaultTimeout)
41
 	tcpTimeout := conf.Network.Timeout.TCP.Value(network.DefaultTimeout)
42
 	idleTimeout := conf.Network.Timeout.Idle.Value(network.DefaultIdleTimeout)
42
 	idleTimeout := conf.Network.Timeout.Idle.Value(network.DefaultIdleTimeout)
43
+	httpTimeout := conf.Network.Timeout.HTTP.Value(network.DefaultHTTPTimeout)
43
 	dohIP := conf.Network.DOHIP.Value(net.ParseIP(network.DefaultDOHHostname)).String()
44
 	dohIP := conf.Network.DOHIP.Value(net.ParseIP(network.DefaultDOHHostname)).String()
44
 	bufferSize := conf.TCPBuffer.Value(network.DefaultBufferSize)
45
 	bufferSize := conf.TCPBuffer.Value(network.DefaultBufferSize)
45
 	userAgent := "mtg/" + version
46
 	userAgent := "mtg/" + version
59
 
60
 
60
 	switch len(proxyURLs) {
61
 	switch len(proxyURLs) {
61
 	case 0:
62
 	case 0:
62
-		return network.NewNetwork(baseDialer, userAgent, dohIP, idleTimeout)
63
+		return network.NewNetwork(baseDialer, userAgent, dohIP, httpTimeout, idleTimeout)
63
 	case 1:
64
 	case 1:
64
 		socksDialer, err := network.NewSocks5Dialer(baseDialer, proxyURLs[0])
65
 		socksDialer, err := network.NewSocks5Dialer(baseDialer, proxyURLs[0])
65
 		if err != nil {
66
 		if err != nil {
66
 			return nil, fmt.Errorf("cannot build socks5 dialer: %w", err)
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
 	socksDialer, err := network.NewLoadBalancedSocks5Dialer(baseDialer, proxyURLs)
73
 	socksDialer, err := network.NewLoadBalancedSocks5Dialer(baseDialer, proxyURLs)
74
 		return nil, fmt.Errorf("cannot build socks5 dialer: %w", err)
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
 const (
11
 const (
12
 	DefaultTimeout     = 10 * time.Second
12
 	DefaultTimeout     = 10 * time.Second
13
 	DefaultIdleTimeout = time.Minute
13
 	DefaultIdleTimeout = time.Minute
14
+	DefaultHTTPTimeout = 10 * time.Second
14
 	DefaultBufferSize  = 4096
15
 	DefaultBufferSize  = 4096
15
 
16
 
16
 	ProxyDialerOpenThreshold        = 5
17
 	ProxyDialerOpenThreshold        = 5
18
 	ProxyDialerResetFailuresTimeout = 10 * time.Second
19
 	ProxyDialerResetFailuresTimeout = 10 * time.Second
19
 
20
 
20
 	DefaultDOHHostname = "9.9.9.9"
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
 var (
25
 var (

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

27
 	dialer      Dialer
27
 	dialer      Dialer
28
 	dns         doh.Resolver
28
 	dns         doh.Resolver
29
 	idleTimeout time.Duration
29
 	idleTimeout time.Duration
30
+	httpTimeout time.Duration
30
 	userAgent   string
31
 	userAgent   string
31
 }
32
 }
32
 
33
 
123
 		dialFunc = n.DialContext
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
 	switch {
133
 	switch {
131
 	case idleTimeout < 0:
134
 	case idleTimeout < 0:
132
 		return nil, fmt.Errorf("timeout should be positive number %s", idleTimeout)
135
 		return nil, fmt.Errorf("timeout should be positive number %s", idleTimeout)
141
 	return &network{
144
 	return &network{
142
 		dialer:      dialer,
145
 		dialer:      dialer,
143
 		idleTimeout: idleTimeout,
146
 		idleTimeout: idleTimeout,
147
+		httpTimeout: httpTimeout,
144
 		userAgent:   userAgent,
148
 		userAgent:   userAgent,
145
 		dns: doh.Resolver{
149
 		dns: doh.Resolver{
146
 			Host:       dohHostname,
150
 			Host:       dohHostname,

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