net/SocketDescriptor: fix SOCK_NONBLOCK flag in CreateSocketPairNonBlock()

This commit is contained in:
Max Kellermann
2018-08-21 11:27:15 +02:00
parent e092eadd8d
commit ebf607eef8

View File

@@ -170,7 +170,7 @@ SocketDescriptor::CreateNonBlock(int domain, int type, int protocol) noexcept
bool bool
SocketDescriptor::CreateSocketPair(int domain, int type, int protocol, SocketDescriptor::CreateSocketPair(int domain, int type, int protocol,
SocketDescriptor &a, SocketDescriptor &a,
SocketDescriptor &b) noexcept SocketDescriptor &b) noexcept
{ {
#ifdef SOCK_CLOEXEC #ifdef SOCK_CLOEXEC
@@ -189,17 +189,17 @@ SocketDescriptor::CreateSocketPair(int domain, int type, int protocol,
bool bool
SocketDescriptor::CreateSocketPairNonBlock(int domain, int type, int protocol, SocketDescriptor::CreateSocketPairNonBlock(int domain, int type, int protocol,
SocketDescriptor &a, SocketDescriptor &a,
SocketDescriptor &b) noexcept SocketDescriptor &b) noexcept
{ {
#ifdef SOCK_CLOEXEC #ifdef SOCK_NONBLOCK
/* implemented since Linux 2.6.27 */ type |= SOCK_NONBLOCK;
type |= SOCK_CLOEXEC;
#endif #endif
if (!CreateSocketPair(domain, type, protocol, a, b)) if (!CreateSocketPair(domain, type, protocol, a, b))
return false; return false;
#ifndef __linux__ #ifndef SOCK_NONBLOCK
a.SetNonBlocking(); a.SetNonBlocking();
b.SetNonBlocking(); b.SetNonBlocking();
#endif #endif