in src/network/_Private/socket_accept_async.php [16:42]
async function socket_accept_async(
OS\FileDescriptor $server,
): Awaitable<OS\FileDescriptor> {
try {
list($fd, $_addr) = OS\accept($server);
return $fd;
} catch (OS\BlockingIOException $_) {
// accept (3P) defines select() as indicating the FD ready for read when there's a connection
try {
$result = await _OS\poll_async(
$server,
\STREAM_AWAIT_READ, /* timeout = */
0,
);
} catch (_OS\ErrnoException $e) {
_OS\throw_errno($e->getCode() as OS\Errno, '%s', $e->getMessage());
}
if ($result === \STREAM_AWAIT_CLOSED) {
_OS\throw_errno(
OS\Errno::ECONNABORTED,
"Server socket closed while waiting for connection",
);
}
list($fd, $_addr) = OS\accept($server);
return $fd;
}
}