Now that with the RBTREE we have a properly sorted Segment tree,
where with exact SEQ matches the tree is sorted by payload_len
smallest to largest, we can avoid walking backwards when checking
for overlaps. Our direct RB_PREV either overlaps or not and that
is a reliable verdict for the rest of the tree.
return (check_overlap_different_data && data_is_different);
}
-#define MAX_IP_DATA (uint32_t)(65536 - 40) // min ip header and min tcp header
-
/** \internal
* \brief walk segment tree backwards to see if there are overlaps
*
if (SEQ_LEQ(SEG_SEQ_RIGHT_EDGE(tree_seg), stream->base_seq)) {
// segment entirely before base_seq
;
- } else if (SEQ_LEQ(tree_seg->seq + MAX_IP_DATA, seg->seq)) {
+ } else if (SEQ_LEQ(tree_seg->seq + tree_seg->payload_len, seg->seq)) {
SCLogDebug("list segment too far to the left, no more overlap will be found");
break;
} else if (SEQ_GT(SEG_SEQ_RIGHT_EDGE(tree_seg), seg->seq)) {