if ( SEQ_GT(tsd.get_end_seq(), snd_nxt) )
snd_nxt = tsd.get_end_seq();
- if ( !SEQ_EQ(r_win_base, tsd.get_seg_ack() ) )
- small_seg_count = 0;
-
if ( SEQ_GT(tsd.get_seg_ack(), r_win_base) )
r_win_base = tsd.get_seg_ack();
if ( ( config->flags & STREAM_CONFIG_NO_ASYNC_REASSEMBLY ) && !flow->two_way_traffic() )
return true;
- if ( config->max_consec_small_segs
- && ( tsd.get_seg_len() < config->max_consec_small_seg_size ) )
+ if ( config->max_consec_small_segs )
{
- listener->small_seg_count++;
+ if ( tsd.get_seg_len() >= config->max_consec_small_seg_size )
+ listener->small_seg_count = 0;
- if ( listener->small_seg_count > config->max_consec_small_segs )
- {
- /* Above threshold, log it... in this TCP policy,
- * action controlled by preprocessor rule. */
+ else if ( ++listener->small_seg_count == config->max_consec_small_segs )
tel.set_tcp_event(EVENT_MAX_SMALL_SEGS_EXCEEDED);
- /* Reset counter, so we're not too noisy */
- listener->small_seg_count = 0;
- }
}
if ( config->max_queued_bytes