瀏覽代碼

Kernel: Tear down connections when we receive an RST packet

Gunnar Beutner 4 年之前
父節點
當前提交
e0ac611a08
共有 1 個文件被更改,包括 5 次插入0 次删除
  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);