summaryrefslogtreecommitdiff
path: root/src/adapter/session_manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/adapter/session_manager.c')
-rw-r--r--src/adapter/session_manager.c9
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);