From 4b749567b8ceb441b27ba375c85d52f6297faea3 Mon Sep 17 00:00:00 2001 From: Chris Farmiloe Date: Tue, 11 Oct 2011 12:53:16 -0400 Subject: [PATCH] net: fix socket leak in case of Dial failure Socket descriptors are not closed when fd.connect() fails during generic socket creation. After a connection failure [ECONNREFUSED] descriptors are left in SYN_SENT state indefinitely (unless they get an explicit RST). Repeated failed connections will eventually cause your program to hit the user/system max-open-files limit. Fixes #2349. R=golang-dev, mikioh.mikioh CC=golang-dev https://golang.org/cl/5229047 --- src/pkg/net/sock.go | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pkg/net/sock.go b/src/pkg/net/sock.go index 366e050ff3..2359014ad6 100644 --- a/src/pkg/net/sock.go +++ b/src/pkg/net/sock.go @@ -52,6 +52,7 @@ func socket(net string, f, p, t int, la, ra syscall.Sockaddr, toAddr func(syscal if ra != nil { if err = fd.connect(ra); err != nil { + closesocket(s) fd.Close() return nil, err } -- 2.50.0