diff options
| author | Tobias Klauser <tklauser@distanz.ch> | 2018-02-26 14:58:05 +0000 |
|---|---|---|
| committer | Tobias Klauser <tobias.klauser@gmail.com> | 2018-02-26 16:59:38 +0000 |
| commit | 144bf04a2b0dea43e17fc9e745d3fa8885de11f7 (patch) | |
| tree | f96fc4725e73fb190e45ccafd995687aa212bb59 /src/syscall/syscall_openbsd.go | |
| parent | db7af2e67b023da2c4e8c1cc49543ebf4566ce52 (diff) | |
| download | go-144bf04a2b0dea43e17fc9e745d3fa8885de11f7.tar.xz | |
net, internal/poll, net/internal/socktest: use SOCK_{CLOEXEC,NONBLOCK} accept4/socket flags on OpenBSD
The SOCK_CLOEXEC and SOCK_NONBLOCK flags to the socket syscall and the
accept4 syscall are supported since OpenBSD 5.7.
Follows CL 40895 and CL 94295
Change-Id: Icaf35ace2ef5e73279a70d4f1a9fbf3be9371e6c
Reviewed-on: https://go-review.googlesource.com/97196
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/syscall/syscall_openbsd.go')
| -rw-r--r-- | src/syscall/syscall_openbsd.go | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/syscall/syscall_openbsd.go b/src/syscall/syscall_openbsd.go index d65e6a51fe..1a9b7644a9 100644 --- a/src/syscall/syscall_openbsd.go +++ b/src/syscall/syscall_openbsd.go @@ -74,6 +74,25 @@ func Pipe(p []int) (err error) { return } +//sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) +func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(&rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + //sys getdents(fd int, buf []byte) (n int, err error) func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { return getdents(fd, buf) |
