mirror of
https://github.com/Control-D-Inc/ctrld.git
synced 2026-02-03 22:18:39 +00:00
Configure timeout for HTTP2 transport
Otherwise, a stale TCP connection may still alive for too long, causing unexpected failed to connect upstream error when network changed.
This commit is contained in:
committed by
Cuong Manh Le
parent
70b0c4f7b9
commit
33a6db2599
@@ -25,6 +25,7 @@ import (
|
|||||||
"github.com/go-playground/validator/v10"
|
"github.com/go-playground/validator/v10"
|
||||||
"github.com/miekg/dns"
|
"github.com/miekg/dns"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
|
"golang.org/x/net/http2"
|
||||||
"golang.org/x/sync/singleflight"
|
"golang.org/x/sync/singleflight"
|
||||||
"tailscale.com/logtail/backoff"
|
"tailscale.com/logtail/backoff"
|
||||||
"tailscale.com/net/tsaddr"
|
"tailscale.com/net/tsaddr"
|
||||||
@@ -489,6 +490,13 @@ func (uc *UpstreamConfig) newDOHTransport(addrs []string) *http.Transport {
|
|||||||
ClientSessionCache: tls.NewLRUClientSessionCache(0),
|
ClientSessionCache: tls.NewLRUClientSessionCache(0),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Prevent bad tcp connection hanging the requests for too long.
|
||||||
|
// See: https://github.com/golang/go/issues/36026
|
||||||
|
if t2, err := http2.ConfigureTransports(transport); err == nil {
|
||||||
|
t2.ReadIdleTimeout = 10 * time.Second
|
||||||
|
t2.PingTimeout = 5 * time.Second
|
||||||
|
}
|
||||||
|
|
||||||
dialerTimeoutMs := 2000
|
dialerTimeoutMs := 2000
|
||||||
if uc.Timeout > 0 && uc.Timeout < dialerTimeoutMs {
|
if uc.Timeout > 0 && uc.Timeout < dialerTimeoutMs {
|
||||||
dialerTimeoutMs = uc.Timeout
|
dialerTimeoutMs = uc.Timeout
|
||||||
|
|||||||
Reference in New Issue
Block a user