1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-16 16:24:59 +00:00

Kernel: Clear SO_ERROR on successful socket connection

When TCP sockets successfully establish a connection, any SO_ERROR
should be cleared back to success. For example, SO_ERROR gets set to
EINPROGRESS on asynchronous connect calls and should be cleared when
the socket moves to the Established state.
This commit is contained in:
brapru 2021-08-11 22:49:18 -04:00 committed by Ali Mohammad Pur
parent 8059f28977
commit 6743170f4e

View file

@ -38,8 +38,10 @@ void TCPSocket::set_state(State new_state)
m_state = new_state;
if (new_state == State::Established && m_direction == Direction::Outgoing)
if (new_state == State::Established && m_direction == Direction::Outgoing) {
m_role = Role::Connected;
[[maybe_unused]] auto rc = set_so_error(KSuccess);
}
if (new_state == State::Closed) {
closing_sockets().with_exclusive([&](auto& table) {