summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--channels/chan_pjsip.c1
-rw-r--r--res/res_pjsip_session.c15
2 files changed, 3 insertions, 13 deletions
diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c
index dd03b74ae..ebda6c7ee 100644
--- a/channels/chan_pjsip.c
+++ b/channels/chan_pjsip.c
@@ -2273,6 +2273,7 @@ static struct hangup_data *hangup_data_alloc(int cause, struct ast_channel *chan
static void clear_session_and_channel(struct ast_sip_session *session, struct ast_channel *ast)
{
session->channel = NULL;
+ set_channel_on_rtp_instance(session, "");
ast_channel_tech_pvt_set(ast, NULL);
}
diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c
index 40b197bf7..bb349a4b6 100644
--- a/res/res_pjsip_session.c
+++ b/res/res_pjsip_session.c
@@ -1872,12 +1872,8 @@ static void session_destructor(void *obj)
ast_taskprocessor_unreference(session->serializer);
ao2_cleanup(session->datastores);
- 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_sip_session_media_state_free(session->active_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))) {
@@ -3138,13 +3134,6 @@ 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;
}