mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 05:07:34 +00:00
Kernel/Net: Socket connected state change should reevaluate blocks
This fixes an issue where TCP sockets could get into the Established state too quickly and fail to unblock a subsequent sys$select() call. This makes websites load *significantly* faster. :^)
This commit is contained in:
parent
7b735b55e1
commit
48589db3aa
2 changed files with 10 additions and 1 deletions
|
@ -269,4 +269,13 @@ KResult Socket::stat(::stat& st) const
|
||||||
return KSuccess;
|
return KSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Socket::set_connected(bool connected)
|
||||||
|
{
|
||||||
|
LOCKER(lock());
|
||||||
|
if (m_connected == connected)
|
||||||
|
return;
|
||||||
|
m_connected = connected;
|
||||||
|
evaluate_block_conditions();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,7 +91,7 @@ public:
|
||||||
virtual Role role(const FileDescription&) const { return m_role; }
|
virtual Role role(const FileDescription&) const { return m_role; }
|
||||||
|
|
||||||
bool is_connected() const { return m_connected; }
|
bool is_connected() const { return m_connected; }
|
||||||
void set_connected(bool connected) { m_connected = connected; }
|
void set_connected(bool);
|
||||||
|
|
||||||
bool can_accept() const { return !m_pending.is_empty(); }
|
bool can_accept() const { return !m_pending.is_empty(); }
|
||||||
RefPtr<Socket> accept();
|
RefPtr<Socket> accept();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue