From 27a901ece39c371eba0f11806d9fe54b0e8dc95c Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Sun, 10 Nov 2024 15:45:47 -0500 Subject: tcp: handle multiple syns in time-wait If multiple syns are received in one dispatch for the same time-wait connection, the first removes the connection while subsequent packets either lookup a nonexistent or an unrelated connection. Avoid the former with a check. Type: fix Change-Id: Ia5f1b3bbd568566eaf36121206aa12363a15b418 Signed-off-by: Florin Coras --- src/vnet/tcp/tcp_input.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/vnet/tcp/tcp_input.c b/src/vnet/tcp/tcp_input.c index 70b5d28e0cc..cd3e4b7700c 100644 --- a/src/vnet/tcp/tcp_input.c +++ b/src/vnet/tcp/tcp_input.c @@ -2551,7 +2551,7 @@ tcp46_listen_inline (vlib_main_t *vm, vlib_node_runtime_t *node, tcp_connection_t *tc; tc = tcp_connection_get (vnet_buffer (b[0])->tcp.connection_index, thread_index); - if (tc->state != TCP_STATE_TIME_WAIT) + if (!tc || tc->state != TCP_STATE_TIME_WAIT) { tcp_inc_counter (listen, TCP_ERROR_CREATE_EXISTS, 1); goto done; -- cgit 1.2.3-korg