From 6d06d4862d4cfc7b78c8805effbc820190a004d8 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Sun, 8 Feb 2015 19:00:43 +0300 Subject: [PATCH] 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 --- src/net/dial.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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 { -- 2.50.0