Squashed commit of the following:
commit
facdc89e9bc8937a7cd33d4063dc0a9a50fbdf58
Author: davis mcpherson <davmcphe@cisco.com>
Date: Wed Jul 15 16:20:24 2020 -0400
stream_tcp: when clearing a session during meta-ack processing pass a nullptr as the Packet* parameter
{
// The last ACK is a part of the session. Delete the session after processing is
// complete.
- trk.session->clear_session(false, true, false, tsd.get_pkt() );
+ trk.session->clear_session(false, true, false, tsd.is_meta_ack_packet() ? nullptr : tsd.get_pkt() );
flow->session_state |= STREAM_STATE_CLOSED;
trk.session->set_pkt_action_flag(ACTION_LWSSN_CLOSED);
}
( trk.session->get_listener_state(tsd) == TcpStreamTracker::TCP_TIME_WAIT ) )
{
Flow* flow = tsd.get_flow();
- trk.session->clear_session(false, true, false, tsd.get_pkt() );
+ trk.session->clear_session(false, true, false, tsd.is_meta_ack_packet() ? nullptr : tsd.get_pkt() );
flow->session_state |= STREAM_STATE_CLOSED;
trk.session->set_pkt_action_flag(ACTION_LWSSN_CLOSED);
}
if ( ( talker_state == TcpStreamTracker::TCP_TIME_WAIT )
|| ( talker_state == TcpStreamTracker::TCP_CLOSED ) )
{
- // The last ACK is a part of the session. Delete the session after processing is
- // complete.
- trk.session->clear_session(false, true, false, tsd.get_pkt() );
+ // The last ACK is a part of the session. Delete session after processing the ack
+ trk.session->clear_session(false, true, false, tsd.is_meta_ack_packet() ? nullptr : tsd.get_pkt() );
flow->session_state |= STREAM_STATE_CLOSED;
trk.session->set_pkt_action_flag(ACTION_LWSSN_CLOSED);
}
{
// The last ACK is a part of the session. Delete the session after processing is
// complete.
- trk.session->clear_session(false, true, false, tsd.get_pkt() );
+ trk.session->clear_session(false, true, false, tsd.is_meta_ack_packet() ? nullptr : tsd.get_pkt() );
flow->session_state |= STREAM_STATE_CLOSED;
trk.session->set_pkt_action_flag(ACTION_LWSSN_CLOSED);
}