From 8014473918c13f813bb9c3c23792f0e45ea41b74 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 14 Mar 2019 11:45:22 +0100 Subject: [PATCH] TCP: Update our side's ack number based on the other side's seq number. --- Kernel/NetworkTask.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Kernel/NetworkTask.cpp b/Kernel/NetworkTask.cpp index 61b4464b29..761a27ed44 100644 --- a/Kernel/NetworkTask.cpp +++ b/Kernel/NetworkTask.cpp @@ -298,7 +298,14 @@ void handle_tcp(const EthernetFrameHeader& eth, int frame_size) return; } - socket->set_tcp_ack_number(socket->tcp_sequence_number() + payload_size); + socket->set_tcp_ack_number(tcp_packet.sequence_number() + payload_size); + kprintf("Got packet with ack_no=%u, seq_no=%u, payload_size=%u, acking it with new ack_no=%u, seq_no=%u\n", + tcp_packet.ack_number(), + tcp_packet.sequence_number(), + payload_size, + socket->tcp_ack_number(), + socket->tcp_sequence_number() + ); socket->send_tcp_packet(*adapter, TCPFlags::ACK); if (payload_size != 0)