]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
stream/segtree: simplify error handling
authorVictor Julien <vjulien@oisf.net>
Tue, 22 Mar 2022 16:01:03 +0000 (17:01 +0100)
committerVictor Julien <vjulien@oisf.net>
Tue, 7 Jun 2022 08:37:53 +0000 (10:37 +0200)
Now that spurious retransmissions don't propegate into the reassembly
code, error handling can be simplified.

src/stream-tcp-list.c

index 708a9cb49063b334ef45421268d117b3305d218c..87b5efe7133a56cc0c7573caecc7f387e61e88c3 100644 (file)
@@ -163,19 +163,10 @@ static inline bool CheckOverlap(struct TCPSEG *tree, TcpSegment *seg)
  *  \retval 2 not inserted, data overlap
  *  \retval 1 inserted with overlap detected
  *  \retval 0 inserted, no overlap
- *  \retval -1 error
  */
 static int DoInsertSegment (TcpStream *stream, TcpSegment *seg, TcpSegment **dup_seg, Packet *p)
 {
-    /* before our base_seq we don't insert it in our list */
-    if (SEQ_LEQ(SEG_SEQ_RIGHT_EDGE(seg), stream->base_seq))
-    {
-        SCLogDebug("not inserting: SEQ+payload %"PRIu32", last_ack %"PRIu32", "
-                "base_seq %"PRIu32, (seg->seq + TCP_SEG_LEN(seg)),
-                stream->last_ack, stream->base_seq);
-        StreamTcpSetEvent(p, STREAM_REASSEMBLY_SEGMENT_BEFORE_BASE_SEQ);
-        return -1;
-    }
+    BUG_ON(SEQ_LEQ(SEG_SEQ_RIGHT_EDGE(seg), stream->base_seq));
 
     /* fast track */
     if (RB_EMPTY(&stream->seg_tree)) {
@@ -645,12 +636,7 @@ int StreamTcpReassembleInsertSegment(ThreadVars *tv, TcpReassemblyThreadCtx *ra_
 
     /* insert segment into list. Note: doesn't handle the data */
     int r = DoInsertSegment (stream, seg, &dup_seg, p);
-    SCLogDebug("DoInsertSegment returned %d", r);
-    if (r < 0) {
-        StatsIncr(tv, ra_ctx->counter_tcp_reass_list_fail);
-        StreamTcpSegmentReturntoPool(seg);
-        SCReturnInt(-1);
-    }
+
     if (IsTcpSessionDumpingEnabled()) {
         StreamTcpSegmentAddPacketData(seg, p, tv, ra_ctx);
     }