runtime: improve startup observability
Some checks failed
build / Linux asan (push) Has been cancelled
build / Linux release (push) Has been cancelled
build / FreeBSD build (push) Has been cancelled

This commit is contained in:
server
2026-04-14 06:04:12 +02:00
parent 3e3f0918e9
commit 7daf51f2da
3 changed files with 126 additions and 2 deletions

View File

@@ -10,6 +10,31 @@ void socket_timeout(socket_t s, long sec, long usec);
void socket_reuse(socket_t s);
void socket_keepalive(socket_t s);
namespace
{
bool socket_accept_should_retry()
{
#ifdef OS_WINDOWS
const int wsa_error = WSAGetLastError();
return wsa_error == WSAEWOULDBLOCK || wsa_error == WSAEINTR;
#else
#ifdef EINTR
if (errno == EINTR)
return true;
#endif
#ifdef EAGAIN
if (errno == EAGAIN)
return true;
#endif
#ifdef EWOULDBLOCK
if (errno == EWOULDBLOCK)
return true;
#endif
return false;
#endif
}
}
int socket_read(socket_t desc, char* read_point, size_t space_left)
{
int ret;
@@ -206,6 +231,8 @@ socket_t socket_accept(socket_t s, struct sockaddr_in *peer)
if ((desc = accept(s, (struct sockaddr *) peer, &i)) == -1)
{
if (socket_accept_should_retry())
return -1;
sys_err("accept: %s (fd %d)", strerror(errno), s);
return -1;
}