tcp_init = false;
tcpStats.released++;
- if ( !flow->two_way_traffic() and free_flow_data )
+ if ( is_data_transferred_asymmetrically() and free_flow_data )
tcpStats.asymmetric_flows++;
client.clear_tracker(flow, p, flush_segments, restart);
flow->clear(free_flow_data);
}
+bool TcpSession::is_data_transferred_asymmetrically() const
+{
+ return !flow->two_way_traffic()
+ && (client.seglist.data_was_queued() != server.seglist.data_was_queued());
+}
+
void TcpSession::update_perf_base_state(char newState)
{
uint32_t session_flags = flow->get_session_flags();
void set_pseudo_established(snort::Packet*);
void check_for_pseudo_established(snort::Packet*);
bool check_for_one_sided_session(snort::Packet*);
+ bool is_data_transferred_asymmetrically() const;
void check_for_repeated_syn(TcpSegmentDescriptor&);
void check_for_session_hijack(TcpSegmentDescriptor&);