diff options
-rw-r--r-- | channels/chan_pjsip.c | 1 | ||||
-rw-r--r-- | res/res_pjsip_session.c | 15 |
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; } |