From 4c8af9cb96e45fb2933f9082c416ba5e4397a209 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Thu, 30 Jul 2020 14:43:03 +0200 Subject: [PATCH] stream: fix endless loop in traffic with gaps --- src/stream-tcp-reassemble.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/stream-tcp-reassemble.c b/src/stream-tcp-reassemble.c index 178c12dc60..4c5858aee0 100644 --- a/src/stream-tcp-reassemble.c +++ b/src/stream-tcp-reassemble.c @@ -1108,6 +1108,7 @@ static int ReassembleUpdateAppLayer (ThreadVars *tv, StatsIncr(tv, ra_ctx->counter_tcp_reass_gap); /* AppLayerHandleTCPData has likely updated progress. */ + const bool no_progress_update = (app_progress == STREAM_APP_PROGRESS(*stream)); app_progress = STREAM_APP_PROGRESS(*stream); /* a GAP also consumes 'data required'. TODO perhaps we can use @@ -1121,8 +1122,10 @@ static int ReassembleUpdateAppLayer (ThreadVars *tv, } if (r < 0) return 0; - + if (no_progress_update) + break; continue; + } else if (mydata == NULL || mydata_len == 0) { /* Possibly a gap, but no new data. */ if ((p->flags & PKT_PSEUDO_STREAM_END) == 0 || ssn->state < TCP_CLOSED) -- 2.47.2