refactor(dialer): it should close idle connections (#457)

Like we did before for the resolver, a dialer should propagate the
request to close idle connections to underlying types.

See https://github.com/ooni/probe/issues/1591
This commit is contained in:
Simone Basso
2021-09-05 19:55:28 +02:00
committed by GitHub
parent a3a27b1ebf
commit 7a9499fee3
17 changed files with 207 additions and 36 deletions
@@ -33,12 +33,12 @@ func NewRequest(ctx context.Context, URL *url.URL, headers http.Header) *http.Re
// NewDialerResolver contructs a new dialer for TCP connections,
// with default, errorwrapping and resolve functionalities
func NewDialerResolver(resolver netxlite.ResolverLegacy) netxlite.Dialer {
var d netxlite.Dialer = netxlite.DefaultDialer
func NewDialerResolver(resolver netxlite.ResolverLegacy) netxlite.DialerLegacy {
var d netxlite.DialerLegacy = netxlite.DefaultDialer
d = &errorsx.ErrorWrapperDialer{Dialer: d}
d = &netxlite.DialerResolver{
Resolver: netxlite.NewResolverLegacyAdapter(resolver),
Dialer: d,
Dialer: netxlite.NewDialerLegacyAdapter(d),
}
return d
}
@@ -80,12 +80,12 @@ func NewSingleTransport(conn net.Conn) http.RoundTripper {
}
// NewSingleTransport creates a new HTTP transport with a custom dialer and handshaker.
func NewTransportWithDialer(dialer netxlite.Dialer, tlsConfig *tls.Config, handshaker netxlite.TLSHandshaker) http.RoundTripper {
func NewTransportWithDialer(dialer netxlite.DialerLegacy, tlsConfig *tls.Config, handshaker netxlite.TLSHandshaker) http.RoundTripper {
transport := newBaseTransport()
transport.DialContext = dialer.DialContext
transport.DialTLSContext = (&netxlite.TLSDialer{
Config: tlsConfig,
Dialer: dialer,
Dialer: netxlite.NewDialerLegacyAdapter(dialer),
TLSHandshaker: handshaker,
}).DialTLSContext
return transport
+1 -1
View File
@@ -8,7 +8,7 @@ import (
)
type TCPConfig struct {
Dialer netxlite.Dialer
Dialer netxlite.DialerLegacy
Endpoint string
Resolver netxlite.ResolverLegacy
}