From: Russ Cox Date: Fri, 27 May 2016 15:05:14 +0000 (-0400) Subject: net/http: change Transport.Dialer to Transport.DialContext X-Git-Tag: go1.7beta1~59 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=605e751b53a8bec7d1f51b2ccc0093e063358dc6;p=gostls13.git net/http: change Transport.Dialer to Transport.DialContext New in Go 1.7 so still possible to change. This allows implementations not tied to *net.Dialer. Fixes #15748. Change-Id: I5fabbf13c7f1951c06587a4ccd120def488267ce Reviewed-on: https://go-review.googlesource.com/23489 Reviewed-by: Ian Lance Taylor --- diff --git a/src/net/http/transport.go b/src/net/http/transport.go index 57ebbd57e1..43b20f2da2 100644 --- a/src/net/http/transport.go +++ b/src/net/http/transport.go @@ -37,10 +37,10 @@ import ( // $no_proxy) environment variables. var DefaultTransport RoundTripper = &Transport{ Proxy: ProxyFromEnvironment, - Dialer: &net.Dialer{ + DialContext: (&net.Dialer{ Timeout: 30 * time.Second, KeepAlive: 30 * time.Second, - }, + }).DialContext, MaxIdleConns: 100, IdleConnTimeout: 90 * time.Second, TLSHandshakeTimeout: 10 * time.Second, @@ -87,18 +87,18 @@ type Transport struct { // If Proxy is nil or returns a nil *URL, no proxy is used. Proxy func(*Request) (*url.URL, error) - // Dial specifies the dial function for creating unencrypted - // TCP connections. If Dial and Dialer are both nil, net.Dial - // is used. + // DialContext specifies the dial function for creating unencrypted TCP connections. + // If DialContext is nil (and the deprecated Dial below is also nil), + // then the transport dials using package net. + DialContext func(ctx context.Context, network, addr string) (net.Conn, error) + + // Dial specifies the dial function for creating unencrypted TCP connections. // - // Deprecated: Use Dialer instead. If both are specified, Dialer - // takes precedence. + // Deprecated: Use DialContext instead, which allows the transport + // to cancel dials as soon as they are no longer needed. + // If both are set, DialContext takes priority. Dial func(network, addr string) (net.Conn, error) - // Dialer optionally specifies a dialer configuration to use - // for new connections. - Dialer *net.Dialer - // DialTLS specifies an optional dial function for creating // TLS connections for non-proxied HTTPS requests. // @@ -777,8 +777,8 @@ func (t *Transport) replaceReqCanceler(r *Request, fn func()) bool { var zeroDialer net.Dialer func (t *Transport) dial(ctx context.Context, network, addr string) (net.Conn, error) { - if t.Dialer != nil { - return t.Dialer.DialContext(ctx, network, addr) + if t.DialContext != nil { + return t.DialContext(ctx, network, addr) } if t.Dial != nil { c, err := t.Dial(network, addr)