net: ignore transient accept errors

This commit is contained in:
server
2026-04-14 00:15:14 +02:00
parent 6d90764d35
commit 147a48fdac

View File

@@ -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;
}