diff --git a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp index b79886708b..6fd09f6182 100644 --- a/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp +++ b/src/add-ons/kernel/network/protocols/tcp/TCPEndpoint.cpp @@ -673,8 +673,12 @@ TCPEndpoint::Accept(struct net_socket** _acceptedSocket) status = acquire_sem_etc(fAcceptSemaphore, 1, B_ABSOLUTE_TIMEOUT | B_CAN_INTERRUPT, timeout); - if (status != B_OK) + if (status != B_OK) { + if (status == B_TIMED_OUT && socket->receive.timeout == 0) + return B_WOULD_BLOCK; + return status; + } locker.Lock(); status = gSocketModule->dequeue_connected(socket, _acceptedSocket);