net: ignore transient accept errors
This commit is contained in:
@@ -206,6 +206,28 @@ socket_t socket_accept(socket_t s, struct sockaddr_in *peer)
|
||||
|
||||
if ((desc = accept(s, (struct sockaddr *) peer, &i)) == -1)
|
||||
{
|
||||
#ifdef EINTR
|
||||
if (errno == EINTR)
|
||||
return INVALID_SOCKET;
|
||||
#endif
|
||||
|
||||
#ifdef EAGAIN
|
||||
if (errno == EAGAIN)
|
||||
return INVALID_SOCKET;
|
||||
#endif
|
||||
|
||||
#ifdef EWOULDBLOCK
|
||||
if (errno == EWOULDBLOCK)
|
||||
return INVALID_SOCKET;
|
||||
#endif
|
||||
|
||||
#ifdef OS_WINDOWS
|
||||
int wsa_error = WSAGetLastError();
|
||||
if (wsa_error == WSAEWOULDBLOCK || wsa_error == WSAEINTR) {
|
||||
return INVALID_SOCKET;
|
||||
}
|
||||
#endif
|
||||
|
||||
sys_err("accept: %s (fd %d)", strerror(errno), s);
|
||||
return -1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user