From: Dave Cheney Date: Sun, 18 Nov 2012 04:31:26 +0000 (+1100) Subject: net: remove unused nil check X-Git-Tag: go1.1rc2~1843 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=0bfece06d7e19b3caba6f1ee0a202e0c90fda23b;p=gostls13.git net: remove unused nil check This is part 1 of a series of proposals to fix issue 4369. In resolving issue 3507 it was decided not to nil out the inner conn.fd field to avoid a race. This implies the checks for fd == nil inside incref/decref are never true. Removing this logic removes one source of errClosing error values, which affects issue 4373 and moves towards bradfitz's request that fd.accept() return io.EOF when closed concurrently. Update #4369. Update #4373. R=mikioh.mikioh, bradfitz, dvyukov, rsc CC=golang-dev https://golang.org/cl/6852057 --- diff --git a/src/pkg/net/fd_unix.go b/src/pkg/net/fd_unix.go index f2f5ffa2f1..096ad41bbf 100644 --- a/src/pkg/net/fd_unix.go +++ b/src/pkg/net/fd_unix.go @@ -353,9 +353,6 @@ func (fd *netFD) connect(ra syscall.Sockaddr) error { // If closing==true, pollserver must be locked; mark the fd as closing. // Returns an error if the fd cannot be used. func (fd *netFD) incref(closing bool) error { - if fd == nil { - return errClosing - } fd.sysmu.Lock() if fd.closing { fd.sysmu.Unlock() @@ -372,9 +369,6 @@ func (fd *netFD) incref(closing bool) error { // Remove a reference to this FD and close if we've been asked to do so (and // there are no references left. func (fd *netFD) decref() { - if fd == nil { - return - } fd.sysmu.Lock() fd.sysref-- if fd.closing && fd.sysref == 0 && fd.sysfile != nil { diff --git a/src/pkg/net/unixsock_posix.go b/src/pkg/net/unixsock_posix.go index f7cc0746f2..16ebd58d6e 100644 --- a/src/pkg/net/unixsock_posix.go +++ b/src/pkg/net/unixsock_posix.go @@ -313,9 +313,7 @@ func (l *UnixListener) Close() error { if l.path[0] != '@' { syscall.Unlink(l.path) } - err := l.fd.Close() - l.fd = nil - return err + return l.fd.Close() } // Addr returns the listener's network address.