From: Dmitry Vyukov Date: Sun, 8 Feb 2015 16:00:43 +0000 (+0300) Subject: net: don't allocate dialer closure if we won't use it X-Git-Tag: go1.5beta1~2079 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=6d06d4862d4cfc7b78c8805effbc820190a004d8;p=gostls13.git net: don't allocate dialer closure if we won't use it When we use dialMulti we also allocate dialSingle closure for no reason. Change-Id: I074282a9d6e2c2a1063ab311a1b95e10fe65219f Reviewed-on: https://go-review.googlesource.com/4119 Reviewed-by: Brad Fitzpatrick --- diff --git a/src/net/dial.go b/src/net/dial.go index e6f0436cdd..0424ed250f 100644 --- a/src/net/dial.go +++ b/src/net/dial.go @@ -159,13 +159,15 @@ func (d *Dialer) Dial(network, address string) (Conn, error) { if err != nil { return nil, &OpError{Op: "dial", Net: network, Addr: nil, Err: err} } - dialer := func(deadline time.Time) (Conn, error) { - return dialSingle(network, address, d.LocalAddr, ra.toAddr(), deadline) - } + var dialer func(deadline time.Time) (Conn, error) if ras, ok := ra.(addrList); ok && d.DualStack && network == "tcp" { dialer = func(deadline time.Time) (Conn, error) { return dialMulti(network, address, d.LocalAddr, ras, deadline) } + } else { + dialer = func(deadline time.Time) (Conn, error) { + return dialSingle(network, address, d.LocalAddr, ra.toAddr(), deadline) + } } c, err := dial(network, ra.toAddr(), dialer, d.deadline()) if d.KeepAlive > 0 && err == nil {