]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
stream: optimize proto detect segment handling
authorVictor Julien <victor@inliniac.net>
Wed, 26 Aug 2015 12:25:16 +0000 (14:25 +0200)
committerVictor Julien <victor@inliniac.net>
Fri, 18 Sep 2015 14:55:18 +0000 (16:55 +0200)
In case of protocol detection not yet being complete, the segment
list was walked unconditionally to unset the app layer processed
flag. Optimize this to bail on the first segment that doesn't have
the flag set.

src/stream-tcp-reassemble.c

index caf955afa1a5a63da82b1dcaca2ccf1351084db7..912a446d3cb7d63eeb93670c8d5a4fbfdda79037 100644 (file)
@@ -3035,6 +3035,8 @@ int StreamTcpReassembleAppLayer (ThreadVars *tv, TcpReassemblyThreadCtx *ra_ctx,
     } else {
         TcpSegment *tmp_seg = stream->seg_list;
         while (tmp_seg != NULL) {
+            if (!(tmp_seg->flags & SEGMENTTCP_FLAG_APPLAYER_PROCESSED))
+                break;
             tmp_seg->flags &= ~SEGMENTTCP_FLAG_APPLAYER_PROCESSED;
             tmp_seg = tmp_seg->next;
         }