From 62b998cc06811340e81decc10307a864e924e9ba Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Fri, 28 Apr 2023 11:48:31 +0200 Subject: [PATCH] stream: clear SYN queue on state change Bug: #5907. --- src/stream-tcp.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/stream-tcp.c b/src/stream-tcp.c index c1fa6c55f1..f544d19506 100644 --- a/src/stream-tcp.c +++ b/src/stream-tcp.c @@ -1928,11 +1928,13 @@ static int StreamTcpPacketStateSynSent( SCLogDebug("ssn->server.flags |= STREAMTCP_STREAM_FLAG_RST_RECV"); ssn->server.flags |= STREAMTCP_STREAM_FLAG_RST_RECV; StreamTcpCloseSsnWithReset(p, ssn); + StreamTcp3wsFreeQueue(ssn); } } else { ssn->client.flags |= STREAMTCP_STREAM_FLAG_RST_RECV; SCLogDebug("ssn->client.flags |= STREAMTCP_STREAM_FLAG_RST_RECV"); StreamTcpCloseSsnWithReset(p, ssn); + StreamTcp3wsFreeQueue(ssn); } /* FIN */ @@ -2043,6 +2045,7 @@ static int StreamTcpPacketStateSynSent( ssn->flags |= STREAMTCP_FLAG_ASYNC; StreamTcpPacketSetState(p, ssn, TCP_ESTABLISHED); SCLogDebug("ssn %p: =~ ssn state is now TCP_ESTABLISHED", ssn); + StreamTcp3wsFreeQueue(ssn); ssn->client.window = TCP_GET_WINDOW(p); ssn->client.last_ack = TCP_GET_SEQ(p);