Kaynağa Gözat

Kernel: Tear down connections when we receive an RST packet

Gunnar Beutner 4 yıl önce
ebeveyn
işleme
e0ac611a08
1 değiştirilmiş dosya ile 5 ekleme ve 0 silme
  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);