res_pjsip_session: Release media resources on session end quicker.

A change was made long ago where the session was kept around
until the underlying INVITE session had been destroyed. This
had the side effect of also keeping the underlying media resources
around for this time as well.

This change ensures that when we know the session is ending we
release the media resources immediately.

ASTERISK-27110

Change-Id: I3c6a82fe7d2c50b9dc9197cb12ef22f20d337501
This commit is contained in:
Joshua Colp
2017-07-26 16:39:32 +00:00
committed by George Joseph
parent ef39998169
commit 8f51443a08
2 changed files with 13 additions and 3 deletions

View File

@@ -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;
}