diff options
Diffstat (limited to 'src/adapter/session_manager.c')
| -rw-r--r-- | src/adapter/session_manager.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/adapter/session_manager.c b/src/adapter/session_manager.c index b552b96..eace0bd 100644 --- a/src/adapter/session_manager.c +++ b/src/adapter/session_manager.c @@ -372,9 +372,11 @@ inline struct packet *session_get_current_packet(struct session *sess) return sess->cur_pkt; } -inline void session_set_current_packet(struct session *sess, struct packet *pkt) +inline void session_set_current_packet(struct session *sess, struct packet *pkt, session_packet_free *free_cb, void *arg) { sess->cur_pkt = pkt; + sess->cur_pkt_free_arg = arg; + sess->cur_pkt_free_cb = free_cb; } void session_free(struct session *sess) @@ -387,7 +389,10 @@ void session_free(struct session *sess) session_free_exdata_runtime(sess, sess->ex_data_rt); if(sess->cur_pkt) { - FREE(sess->cur_pkt); + if(sess->cur_pkt_free_cb) + { + sess->cur_pkt_free_cb(sess, sess->cur_pkt, sess->cur_pkt_free_arg); + } } FREE(sess->ex_data_rt); FREE(sess); |
