Pārlūkot izejas kodu

Kernel: Tear down connections when we receive an RST packet

Gunnar Beutner 4 gadi atpakaļ
vecāks
revīzija
e0ac611a08
1 mainītis faili ar 5 papildinājumiem un 0 dzēšanām
  1. 5 0
      Kernel/Net/NetworkTask.cpp

+ 5 - 0
Kernel/Net/NetworkTask.cpp

@@ -528,6 +528,11 @@ void handle_tcp(const IPv4Packet& ipv4_packet, const Time& packet_timestamp)
             return;
         }
     case TCPSocket::State::Established:
+        if (tcp_packet.has_rst()) {
+            socket->set_state(TCPSocket::State::Closed);
+            return;
+        }
+
         if (tcp_packet.has_fin()) {
             if (payload_size != 0)
                 socket->did_receive(ipv4_packet.source(), tcp_packet.source_port(), KBuffer::copy(&ipv4_packet, sizeof(IPv4Packet) + ipv4_packet.payload_size()), packet_timestamp);