1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2024-12-26 01:59:53 +03:00

Merge PR #1317: Mayaqua/Network.c: Always use fcntl() to toggle socket non-blocking mode (UNIX)

This commit is contained in:
Davide Beatrici 2021-04-01 19:23:45 +02:00 committed by GitHub
commit 3e17c818a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -8029,38 +8029,17 @@ bool IsSubnetMask32(UINT ip)
// Turn on and off the non-blocking mode of the socket
void UnixSetSocketNonBlockingMode(int fd, bool nonblock)
{
UINT flag = 0;
// Validate arguments
if (fd == INVALID_SOCKET)
{
return;
}
if (nonblock)
const int flags = fcntl(fd, F_GETFL, 0);
if (flags != -1)
{
flag = 1;
fcntl(fd, F_SETFL, nonblock ? flags | O_NONBLOCK : flags & ~O_NONBLOCK);
}
#ifdef FIONBIO
ioctl(fd, FIONBIO, &flag);
#else // FIONBIO
{
int flag = fcntl(fd, F_GETFL, 0);
if (flag != -1)
{
if (nonblock)
{
flag |= O_NONBLOCK;
}
else
{
flag = flag & ~O_NONBLOCK;
fcntl(fd, F_SETFL, flag);
}
}
}
#endif // FIONBIO
}
// Do Nothing