]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
Reset app layer processed flag for segments that have been sent for proto
authorAnoop Saldanha <anoopsaldanha@gmail.com>
Thu, 3 Oct 2013 04:40:11 +0000 (10:10 +0530)
committerAnoop Saldanha <anoopsaldanha@gmail.com>
Tue, 8 Oct 2013 16:17:35 +0000 (21:47 +0530)
detection, but we failed to figure out the proto.

Updated a unittest to reflect the above change.

src/stream-tcp-reassemble.c

index dbda9261ad5cf7cde24073cb9d92f19e607f30d6..3c17ba6a8cb875e8150f1f61bcd0db5617744d94 100644 (file)
@@ -2959,6 +2959,12 @@ int StreamTcpReassembleAppLayer (ThreadVars *tv, TcpReassemblyThreadCtx *ra_ctx,
     /* store ra_base_seq in the stream */
     if (StreamTcpIsSetStreamFlagAppProtoDetectionCompleted(stream)) {
         stream->ra_app_base_seq = ra_base_seq;
+    } else {
+        TcpSegment *tmp_seg = stream->seg_list;
+        while (tmp_seg != NULL) {
+            tmp_seg->flags &= ~SEGMENTTCP_FLAG_APPLAYER_PROCESSED;
+            tmp_seg = tmp_seg->next;
+        }
     }
     SCLogDebug("stream->ra_app_base_seq %u", stream->ra_app_base_seq);
     SCReturnInt(0);
@@ -6855,7 +6861,7 @@ static int StreamTcpReassembleTest40 (void) {
 
     /* check is have the segment in the list and flagged or not */
     if (ssn.client.seg_list == NULL ||
-            !(ssn.client.seg_list->flags & SEGMENTTCP_FLAG_APPLAYER_PROCESSED))
+        (ssn.client.seg_list->flags & SEGMENTTCP_FLAG_APPLAYER_PROCESSED))
     {
         printf("the list is NULL or the processed segment has not been flaged (7): ");
         goto end;