]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
stream: improve flow end payload logging
authorVictor Julien <vjulien@oisf.net>
Sat, 23 Apr 2022 11:59:34 +0000 (13:59 +0200)
committerVictor Julien <vjulien@oisf.net>
Tue, 26 Apr 2022 07:40:35 +0000 (09:40 +0200)
Use all available data, including un-ACK'd, when in flow timeout
mode.

Bug: #5276.

src/stream-tcp.c

index eea743d3c9bf129c89bafc24004145ca6a58c9c3..2bbcafccf272090943dad1c99c113e850d37ef5a 100644 (file)
@@ -6341,9 +6341,16 @@ int StreamTcpSegmentForEach(const Packet *p, uint8_t flag, StreamSegmentCallback
     /* for IDS, return ack'd segments. For IPS all. */
     TcpSegment *seg;
     RB_FOREACH(seg, TCPSEG, &stream->seg_tree) {
-        if (!((stream_config.flags & STREAMTCP_INIT_FLAG_INLINE)
-                    || SEQ_LT(seg->seq, stream->last_ack)))
-            break;
+        if (!(stream_config.flags & STREAMTCP_INIT_FLAG_INLINE)) {
+            if (PKT_IS_PSEUDOPKT(p)) {
+                /* use un-ACK'd data as well */
+            } else {
+                /* in IDS mode, use ACK'd data */
+                if (SEQ_GEQ(seg->seq, stream->last_ack)) {
+                    break;
+                }
+            }
+        }
 
         const uint8_t *seg_data;
         uint32_t seg_datalen;