diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2013-01-29 20:52:43 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2013-01-29 20:52:43 +0000 |
commit | d6f2922e91928b5191a5c5f1b3a6b320712b5ce3 (patch) | |
tree | 4f2fad1f4b778519bdd5941185c7e1d032af055b /libgo/go/net/fd_unix.go | |
parent | 91bfca59095b1cca9d4364996866848eaaf76c26 (diff) | |
download | gcc-d6f2922e91928b5191a5c5f1b3a6b320712b5ce3.zip gcc-d6f2922e91928b5191a5c5f1b3a6b320712b5ce3.tar.gz gcc-d6f2922e91928b5191a5c5f1b3a6b320712b5ce3.tar.bz2 |
libgo: Update Go library to master revision 15489/921e53d4863c.
From-SVN: r195560
Diffstat (limited to 'libgo/go/net/fd_unix.go')
-rw-r--r-- | libgo/go/net/fd_unix.go | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/libgo/go/net/fd_unix.go b/libgo/go/net/fd_unix.go index 6d8af0a..e9d2e41 100644 --- a/libgo/go/net/fd_unix.go +++ b/libgo/go/net/fd_unix.go @@ -288,10 +288,16 @@ func server(fd int) *pollServer { return pollservers[k] } -func newFD(fd, family, sotype int, net string) (*netFD, error) { - if err := syscall.SetNonblock(fd, true); err != nil { +func dialTimeout(net, addr string, timeout time.Duration) (Conn, error) { + deadline := time.Now().Add(timeout) + _, addri, err := resolveNetAddr("dial", net, addr, deadline) + if err != nil { return nil, err } + return dialAddr(net, addr, addri, deadline) +} + +func newFD(fd, family, sotype int, net string) (*netFD, error) { netfd := &netFD{ sysfd: fd, family: family, @@ -606,16 +612,11 @@ func (fd *netFD) accept(toAddr func(syscall.Sockaddr) Addr) (netfd *netFD, err e } defer fd.decref() - // See ../syscall/exec_unix.go for description of ForkLock. - // It is okay to hold the lock across syscall.Accept - // because we have put fd.sysfd into non-blocking mode. var s int var rsa syscall.Sockaddr for { - syscall.ForkLock.RLock() - s, rsa, err = syscall.Accept(fd.sysfd) + s, rsa, err = accept(fd.sysfd) if err != nil { - syscall.ForkLock.RUnlock() if err == syscall.EAGAIN { if err = fd.pollServer.WaitRead(fd); err == nil { continue @@ -629,8 +630,6 @@ func (fd *netFD) accept(toAddr func(syscall.Sockaddr) Addr) (netfd *netFD, err e } break } - syscall.CloseOnExec(s) - syscall.ForkLock.RUnlock() if netfd, err = newFD(s, fd.family, fd.sotype, fd.net); err != nil { closesocket(s) |