From 20371d0445f8cdfd7af0c6510c3d1dd015527fbf Mon Sep 17 00:00:00 2001 From: Martin Stein Date: Mon, 3 Jun 2024 10:32:21 +0200 Subject: [PATCH] nic_router: drop closed tcp links immediately RFCs recommend to keep TCP connections for a certain time even after they finished a close handshake, AFAIK, in order to be able to recognize astray packets when they arrive later. This seems overambitious especially when in the context of the router where session quota is pretty limited. Therefore, this commit drops this final timeout and drops closed connections immediately. Ref #4729 --- repos/os/src/server/nic_router/link.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/repos/os/src/server/nic_router/link.cc b/repos/os/src/server/nic_router/link.cc index 5e3080d9e9..ea3a436a7e 100644 --- a/repos/os/src/server/nic_router/link.cc +++ b/repos/os/src/server/nic_router/link.cc @@ -259,11 +259,11 @@ void Tcp_link::_tcp_packet(Tcp_packet &tcp, } } } - if (_state == State::OPENING || _state == State::OPEN) { - _packet(); - } else { - _dissolve_timeout.schedule( - Microseconds(_config_ptr->tcp_max_segm_lifetime().value << 1)); + switch (_state) { + case State::OPENING: + case State::OPEN: _packet(); break; + case State::CLOSED: _dissolve_timeout.schedule(Microseconds(0UL)); break; + default: _dissolve_timeout.schedule(Microseconds(_config_ptr->tcp_max_segm_lifetime().value << 1)); break; } }