diff options
Diffstat (limited to 'src/lib/net/net.go')
-rw-r--r-- | src/lib/net/net.go | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/lib/net/net.go b/src/lib/net/net.go index b81e99268..db708191b 100644 --- a/src/lib/net/net.go +++ b/src/lib/net/net.go @@ -143,10 +143,15 @@ func boolint(b bool) int { func socket(net, laddr, raddr string, f, p, t int64, la, ra *syscall.Sockaddr) (fd *netFD, err *os.Error) { + // See ../syscall/exec.go for description of ForkLock. + syscall.ForkLock.RLock(); s, e := syscall.Socket(f, p, t); if e != 0 { + syscall.ForkLock.RUnlock(); return nil, os.ErrnoToError(e) } + syscall.CloseOnExec(s); + syscall.ForkLock.RUnlock(); // Allow reuse of recently-used addresses. syscall.Setsockopt_int(s, syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1); |