stream: fix endless loop in traffic with gaps

pull/5247/head
Victor Julien 5 years ago
parent 9b13c1b804
commit 4c8af9cb96

@ -1108,6 +1108,7 @@ static int ReassembleUpdateAppLayer (ThreadVars *tv,
StatsIncr(tv, ra_ctx->counter_tcp_reass_gap); StatsIncr(tv, ra_ctx->counter_tcp_reass_gap);
/* AppLayerHandleTCPData has likely updated progress. */ /* AppLayerHandleTCPData has likely updated progress. */
const bool no_progress_update = (app_progress == STREAM_APP_PROGRESS(*stream));
app_progress = STREAM_APP_PROGRESS(*stream); app_progress = STREAM_APP_PROGRESS(*stream);
/* a GAP also consumes 'data required'. TODO perhaps we can use /* a GAP also consumes 'data required'. TODO perhaps we can use
@ -1121,8 +1122,10 @@ static int ReassembleUpdateAppLayer (ThreadVars *tv,
} }
if (r < 0) if (r < 0)
return 0; return 0;
if (no_progress_update)
break;
continue; continue;
} else if (mydata == NULL || mydata_len == 0) { } else if (mydata == NULL || mydata_len == 0) {
/* Possibly a gap, but no new data. */ /* Possibly a gap, but no new data. */
if ((p->flags & PKT_PSEUDO_STREAM_END) == 0 || ssn->state < TCP_CLOSED) if ((p->flags & PKT_PSEUDO_STREAM_END) == 0 || ssn->state < TCP_CLOSED)

Loading…
Cancel
Save