diff --git a/src/session/session.cpp b/src/session/session.cpp index 542dba1..659f7b5 100644 --- a/src/session/session.cpp +++ b/src/session/session.cpp @@ -75,7 +75,7 @@ enum session_direction session_get_direction(const struct session *sess) return sess->sess_dir; } -void session_set_flow_direction(struct session *sess, enum flow_direction dir) +void session_set_current_flow_direction(struct session *sess, enum flow_direction dir) { sess->flow_dir = dir; } diff --git a/src/session/session_manager.cpp b/src/session/session_manager.cpp index 9bf66ee..ce6431e 100644 --- a/src/session/session_manager.cpp +++ b/src/session/session_manager.cpp @@ -496,6 +496,9 @@ static int duplicated_packet_bypass(struct session_manager *mgr, struct session break; } session_set_duplicate_traffic(sess); + + session_set_current_packet(sess, pkt); + session_set_current_flow_direction(sess, dir); return 1; } else @@ -578,7 +581,7 @@ static void session_update(struct session *sess, enum session_state next_state, } session_set_current_packet(sess, pkt); - session_set_flow_direction(sess, dir); + session_set_current_flow_direction(sess, dir); session_set_timestamp(sess, SESSION_TIMESTAMP_LAST, real_sec); session_set_state(sess, next_state); } @@ -997,7 +1000,7 @@ void session_manager_free_session(struct session_manager *mgr, struct session *s session_clear_sid_list(sess, FLOW_DIRECTION_C2S); session_clear_sid_list(sess, FLOW_DIRECTION_S2C); session_set_current_packet(sess, NULL); - session_set_flow_direction(sess, FLOW_DIRECTION_NONE); + session_set_current_flow_direction(sess, FLOW_DIRECTION_NONE); session_pool_push(mgr->sess_pool, sess); sess = NULL; } diff --git a/src/session/session_priv.h b/src/session/session_priv.h index 8261649..b04906d 100644 --- a/src/session/session_priv.h +++ b/src/session/session_priv.h @@ -81,7 +81,7 @@ void session_set_tuple(struct session *sess, const struct tuple6 *key); void session_set_tuple_direction(struct session *sess, enum flow_direction dir); void session_set_direction(struct session *sess, enum session_direction dir); -void session_set_flow_direction(struct session *sess, enum flow_direction dir); +void session_set_current_flow_direction(struct session *sess, enum flow_direction dir); void session_set_state(struct session *sess, enum session_state state); void session_set_type(struct session *sess, enum session_type type); void session_set_duplicate_traffic(struct session *sess); diff --git a/src/stellar/stellar.cpp b/src/stellar/stellar.cpp index d1bf30d..da5c79d 100644 --- a/src/stellar/stellar.cpp +++ b/src/stellar/stellar.cpp @@ -19,6 +19,7 @@ static void update_session_stat(struct session *sess, struct packet *pkt) if (sess) { enum flow_direction dir = session_get_current_flow_direction(sess); + assert(dir != FLOW_DIRECTION_NONE); int is_ctrl = packet_is_ctrl(pkt); switch (packet_get_action(pkt)) { @@ -36,7 +37,7 @@ static void update_session_stat(struct session *sess, struct packet *pkt) } session_set_current_packet(sess, NULL); - session_set_flow_direction(sess, FLOW_DIRECTION_NONE); + session_set_current_flow_direction(sess, FLOW_DIRECTION_NONE); } }