]> Cypherpunks repositories - gostls13.git/commitdiff
net/http: change Transport.Dialer to Transport.DialContext
authorRuss Cox <rsc@golang.org>
Fri, 27 May 2016 15:05:14 +0000 (11:05 -0400)
committerRuss Cox <rsc@golang.org>
Fri, 27 May 2016 16:26:42 +0000 (16:26 +0000)
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 <iant@golang.org>
src/net/http/transport.go

index 57ebbd57e12c4432b6046c7ed82177e52a3a5762..43b20f2da2f86ad7c0633a40e1059116828a0b52 100644 (file)
@@ -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)