virtual void init_flush_policy(void) = 0;
virtual void set_splitter(StreamSplitter* ss) = 0;
virtual void set_splitter(const Flow* flow) = 0;
+ virtual void reset_splitter( void ) = 0;
virtual void init_on_syn_sent(TcpSegmentDescriptor&) = 0;
virtual void init_on_syn_recv(TcpSegmentDescriptor&) = 0;
else if (flow->get_session_flags() & SSNFLAG_TIMEDOUT)
tcpStats.timeouts++;
- set_splitter(true, nullptr);
- set_splitter(false, nullptr);
DebugFormat(DEBUG_STREAM_STATE, "In TcpSessionClear, %lu bytes in use\n", tcp_memcap->used());
server->reassembler->purge_segment_list();
}
- paf_clear(&client->paf_state);
- paf_clear(&server->paf_state);
// update light-weight state
if ( freeApplicationData == 2 )
+ {
flow->restart(true);
+
+ // FIXIT - do we need to reset PAF here too?
+ client->reset_splitter();
+ server->reset_splitter();
+ }
else
{
flow->clear(freeApplicationData);
- config = nullptr;
+ paf_clear(&client->paf_state);
+ paf_clear(&server->paf_state);
+ set_splitter(true, nullptr);
+ set_splitter(false, nullptr);
}
+
// generate event for rate filtering
tel.log_internal_event(INTERNAL_EVENT_SESSION_DEL);
set_splitter(new AtomSplitter(!client_tracker) );
}
+void TcpTracker::reset_splitter( void )
+{
+ if ( splitter )
+ splitter->reset();
+}
+
void TcpTracker::init_on_syn_sent(TcpSegmentDescriptor& tsd)
{
Profile profile(s5TcpNewSessPerfStats);
void init_flush_policy(void) override;
void set_splitter(StreamSplitter* ss) override;
void set_splitter(const Flow* flow) override;
+ void reset_splitter( void ) override;
void init_on_syn_sent(TcpSegmentDescriptor&) override;
void init_on_syn_recv(TcpSegmentDescriptor&) override;