Browse Source

Kernel: Do not send delayed ack in response to RST/ACK

In accordance with RFC 793, if the receiver is in the SYN-SENT state
it should respond to a RST by aborting the connection and immediately
move to the CLOSED state.

Previously the system would ACK all RST/ACKs, and the remote peer would
just respond with more RST packets.
brapru 4 years ago
parent
commit
63a15ed19d
1 changed files with 0 additions and 2 deletions
  1. 0 2
      Kernel/Net/NetworkTask.cpp

+ 0 - 2
Kernel/Net/NetworkTask.cpp

@@ -460,8 +460,6 @@ void handle_tcp(IPv4Packet const& ipv4_packet, Time const& packet_timestamp)
             socket->set_setup_state(Socket::SetupState::Completed);
             return;
         case TCPFlags::ACK | TCPFlags::RST:
-            socket->set_ack_number(tcp_packet.sequence_number() + payload_size);
-            send_delayed_tcp_ack(socket);
             socket->set_state(TCPSocket::State::Closed);
             socket->set_error(TCPSocket::Error::RSTDuringConnect);
             socket->set_setup_state(Socket::SetupState::Completed);