if flow has disabled app layer inspection, disable buffering the segments unnecessarily

remotes/origin/master-1.2.x
Anoop Saldanha 13 years ago committed by Victor Julien
parent 08bd8ec4e2
commit f684b60127

@ -2696,12 +2696,25 @@ static int StreamTcpReassembleAppLayer (TcpReassemblyThreadCtx *ra_ctx,
seg, seg->seq, seg->payload_len,
(uint32_t)(seg->seq + seg->payload_len));
/* Remove the segments which are either completely before the
ra_base_seq and processed by both app layer and raw reassembly. */
if (SEQ_LEQ((seg->seq + seg->payload_len), (ra_base_seq+1)) &&
seg->flags & SEGMENTTCP_FLAG_RAW_PROCESSED &&
seg->flags & SEGMENTTCP_FLAG_APPLAYER_PROCESSED)
{
if (p->flow->flags & FLOW_NO_APPLAYER_INSPECTION) {
if (seg->flags & SEGMENTTCP_FLAG_RAW_PROCESSED) {
SCLogDebug("removing seg %p seq %"PRIu32
" len %"PRIu16"", seg, seg->seq, seg->payload_len);
TcpSegment *next_seg = seg->next;
StreamTcpRemoveSegmentFromStream(stream, seg);
StreamTcpSegmentReturntoPool(seg);
seg = next_seg;
continue;
} else {
break;
}
/* Remove the segments which are either completely before the
* ra_base_seq and processed by both app layer and raw reassembly. */
} else if (SEQ_LEQ((seg->seq + seg->payload_len), (ra_base_seq+1)) &&
seg->flags & SEGMENTTCP_FLAG_RAW_PROCESSED &&
seg->flags & SEGMENTTCP_FLAG_APPLAYER_PROCESSED) {
SCLogDebug("removing pre ra_base_seq %"PRIu32" seg %p seq %"PRIu32
" len %"PRIu16"", ra_base_seq, seg, seg->seq, seg->payload_len);

Loading…
Cancel
Save