summaryrefslogtreecommitdiff
path: root/res/res_pjsip_session.c
diff options
context:
space:
mode:
Diffstat (limited to 'res/res_pjsip_session.c')
-rw-r--r--res/res_pjsip_session.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c
index bb349a4b6..40b197bf7 100644
--- a/res/res_pjsip_session.c
+++ b/res/res_pjsip_session.c
@@ -1872,8 +1872,12 @@ static void session_destructor(void *obj)
ast_taskprocessor_unreference(session->serializer);
ao2_cleanup(session->datastores);
- ast_sip_session_media_state_free(session->active_media_state);
- ast_sip_session_media_state_free(session->pending_media_state);
+ if (session->active_media_state) {
+ ast_sip_session_media_state_free(session->active_media_state);
+ }
+ if (session->pending_media_state) {
+ ast_sip_session_media_state_free(session->pending_media_state);
+ }
AST_LIST_HEAD_DESTROY(&session->supplements);
while ((delay = AST_LIST_REMOVE_HEAD(&session->delayed_requests, next))) {
@@ -3134,6 +3138,13 @@ static int session_end(void *vsession)
iter->session_end(session);
}
}
+
+ /* Release any media resources. */
+ ast_sip_session_media_state_free(session->active_media_state);
+ session->active_media_state = NULL;
+ ast_sip_session_media_state_free(session->pending_media_state);
+ session->pending_media_state = NULL;
+
return 0;
}