Переглянути джерело

IPv4: Don't ACK empty TCP packets

Wireshark was complaining about duplicate ACK's and this was why.
Andreas Kling 5 роки тому
батько
коміт
1037a1d2ba
1 змінених файлів з 3 додано та 6 видалено
  1. 3 6
      Kernel/Net/NetworkTask.cpp

+ 3 - 6
Kernel/Net/NetworkTask.cpp

@@ -617,12 +617,9 @@ void handle_tcp(const IPv4Packet& ipv4_packet)
             socket->sequence_number());
 #endif
 
-        bool should_ack = true;
-        if (payload_size != 0) {
-            should_ack = socket->did_receive(ipv4_packet.source(), tcp_packet.source_port(), KBuffer::copy(&ipv4_packet, sizeof(IPv4Packet) + ipv4_packet.payload_size()));
+        if (payload_size) {
+            if (socket->did_receive(ipv4_packet.source(), tcp_packet.source_port(), KBuffer::copy(&ipv4_packet, sizeof(IPv4Packet) + ipv4_packet.payload_size())))
+                socket->send_tcp_packet(TCPFlags::ACK);
         }
-
-        if (should_ack)
-            socket->send_tcp_packet(TCPFlags::ACK);
     }
 }