From b45cfae7f4e0e5db58500b81379559850e28bce1 Mon Sep 17 00:00:00 2001 From: Conrad Pankoff Date: Sun, 8 Sep 2019 17:22:41 +1000 Subject: [PATCH] Kernel: Don't mark incoming sockets as connected in NetworkTask An incoming socket should only be considered connected after a program has received it from accept(). Before that point, it's only "half" open, and it might not ever actually be served to a program. Socket::accept is where m_connected is correctly set. --- Kernel/Net/NetworkTask.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Kernel/Net/NetworkTask.cpp b/Kernel/Net/NetworkTask.cpp index 85dd930ada..cb14243c5f 100644 --- a/Kernel/Net/NetworkTask.cpp +++ b/Kernel/Net/NetworkTask.cpp @@ -455,10 +455,9 @@ void handle_tcp(const IPv4Packet& ipv4_packet) case TCPFlags::ACK: socket->set_ack_number(tcp_packet.sequence_number() + payload_size); socket->set_state(TCPSocket::State::Established); - if (socket->direction() == TCPSocket::Direction::Outgoing) { - socket->set_setup_state(Socket::SetupState::Completed); + socket->set_setup_state(Socket::SetupState::Completed); + if (socket->direction() == TCPSocket::Direction::Outgoing) socket->set_connected(true); - } socket->release_to_originator(); return; default: