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:
parent
79a6312c8f
commit
f2fdac789c
4 changed files with 22 additions and 2 deletions
|
@ -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)) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue