diff options
author | Richard Mudgett <rmudgett@digium.com> | 2015-07-30 17:05:57 -0500 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2015-07-30 17:05:57 -0500 |
commit | 077c58cd5c421edac3eb0f7cb453334bc51fa0ac (patch) | |
tree | 692b14f239ec00f0a6f83ce7e085cdafa278adac /res/res_pjsip_session.c | |
parent | 687597ca8c2412f79b79f9b13e17f3ec0ff0ce0c (diff) |
res_pjsip_session.c: Fix crashes seen when call cancelled.
Two testsuite tests crashed in the same place as a result of an INVITE
being CANCELed.
tests/channels/pjsip/resolver/srv/failover/in_dialog/transport_unspecified
tests/channels/pjsip/resolver/srv/failover/in_dialog/transport_tcp
The session pointer is no longer in the inv->mod_data[session_module.id]
location because the INVITE transaction has reached the terminated state.
ASTERISK-25297 #close
Reported by: Richard Mudgett
Change-Id: Idb75fdca0321f5447d5dac737a632a5f03614427
Diffstat (limited to 'res/res_pjsip_session.c')
-rw-r--r-- | res/res_pjsip_session.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c index 45446715f..625ab8be3 100644 --- a/res/res_pjsip_session.c +++ b/res/res_pjsip_session.c @@ -2713,8 +2713,10 @@ static void session_inv_on_media_update(pjsip_inv_session *inv, pj_status_t stat struct ast_sip_session *session = inv->mod_data[session_module.id]; const pjmedia_sdp_session *local, *remote; - if (!session->channel) { - /* If we don't have a channel. We really don't care about media updates. + if (!session || !session->channel) { + /* + * If we don't have a session or channel then we really + * don't care about media updates. * Just ignore */ return; |