From 6743170f4ef8ac1ece0985fe400e51dc3ece5ef5 Mon Sep 17 00:00:00 2001 From: brapru Date: Wed, 11 Aug 2021 22:49:18 -0400 Subject: [PATCH] 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. --- Kernel/Net/TCPSocket.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Kernel/Net/TCPSocket.cpp b/Kernel/Net/TCPSocket.cpp index c1ea1abd8c..4cae65183c 100644 --- a/Kernel/Net/TCPSocket.cpp +++ b/Kernel/Net/TCPSocket.cpp @@ -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) {