1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 09:38:11 +00:00

Kernel: Add a new block state for accept() on a blocking socket

Rather than asserting, which really ruins everyone's day.
This commit is contained in:
Robin Burchell 2019-07-18 10:39:00 +02:00 committed by Andreas Kling
parent 79a6312c8f
commit f2fdac789c
4 changed files with 22 additions and 2 deletions

View file

@ -137,6 +137,18 @@ bool Scheduler::pick_next()
return IterationDecision::Continue;
}
if (thread.state() == Thread::BlockedAccept) {
auto& description = *thread.m_blocked_description;
auto& socket = *description.socket();
if (socket.can_accept()) {
thread.unblock();
return IterationDecision::Continue;
}
return IterationDecision::Continue;
}
if (thread.state() == Thread::BlockedSelect) {
if (thread.m_select_has_timeout) {
if (now_sec > thread.m_select_timeout.tv_sec || (now_sec == thread.m_select_timeout.tv_sec && now_usec >= thread.m_select_timeout.tv_usec)) {