aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Hoisie <hoisie@gmail.com>2011-01-04 11:55:13 -0500
committerRuss Cox <rsc@golang.org>2011-01-04 11:55:13 -0500
commited1cbca81fcf20bc933a81bb4aa7281b34a96e55 (patch)
treec0b0068615245c493e3aa1eb6ed70fb1b2e7ce59
parentbf453eba9008c37b56ac5239e585040414e8e28e (diff)
downloadgo-ed1cbca81fcf20bc933a81bb4aa7281b34a96e55.tar.gz
go-ed1cbca81fcf20bc933a81bb4aa7281b34a96e55.zip
net: fix close of Listener
Fixes #1375. R=rsc, r CC=golang-dev https://golang.org/cl/3731048
-rw-r--r--src/pkg/net/fd.go4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/pkg/net/fd.go b/src/pkg/net/fd.go
index b2e24f5986..5adaf1df3c 100644
--- a/src/pkg/net/fd.go
+++ b/src/pkg/net/fd.go
@@ -567,6 +567,10 @@ func (fd *netFD) accept(toAddr func(syscall.Sockaddr) Addr) (nfd *netFD, err os.
var s, e int
var sa syscall.Sockaddr
for {
+ if fd.closing {
+ syscall.ForkLock.RUnlock()
+ return nil, os.EINVAL
+ }
s, sa, e = syscall.Accept(fd.sysfd)
if e != syscall.EAGAIN {
break