From 8964f754f55709bccd0d7cf263c0d878e9a96143 Mon Sep 17 00:00:00 2001 From: Jamie Mansfield Date: Mon, 7 Feb 2022 00:12:14 +0000 Subject: [PATCH] Kernel: Fix bug in TCP state handling in SynSent When receiving SYN while in SynSent, we now reply with SYN|ACK in addition to the SynSent->SynReceived transition. --- Kernel/Net/NetworkTask.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Kernel/Net/NetworkTask.cpp b/Kernel/Net/NetworkTask.cpp index c99d167f80b..29e8c74e624 100644 --- a/Kernel/Net/NetworkTask.cpp +++ b/Kernel/Net/NetworkTask.cpp @@ -472,7 +472,7 @@ void handle_tcp(IPv4Packet const& ipv4_packet, Time const& packet_timestamp) switch (tcp_packet.flags()) { case TCPFlags::SYN: socket->set_ack_number(tcp_packet.sequence_number() + payload_size + 1); - (void)socket->send_ack(true); + (void)socket->send_tcp_packet(TCPFlags::SYN | TCPFlags::ACK); socket->set_state(TCPSocket::State::SynReceived); return; case TCPFlags::ACK | TCPFlags::SYN: