net/SocketDescriptor: add AcceptNonBlock() overload without address

This commit is contained in:
Max Kellermann
2017-08-11 09:02:10 +02:00
parent b234f4307f
commit 614b3634d4
3 changed files with 22 additions and 0 deletions

View File

@@ -68,6 +68,20 @@ SocketDescriptor::Accept()
: Undefined();
}
SocketDescriptor
SocketDescriptor::AcceptNonBlock() const
{
#ifdef HAVE_ACCEPT4
int connection_fd = ::accept4(Get(), nullptr, nullptr,
SOCK_CLOEXEC|SOCK_NONBLOCK);
#else
int connection_fd = ::accept(Get(), nullptr, nullptr);
if (connection_fd >= 0)
SocketDescriptor(connection_fd).SetNonBlocking();
#endif
return SocketDescriptor(connection_fd);
}
SocketDescriptor
SocketDescriptor::AcceptNonBlock(StaticSocketAddress &address) const
{