summaryrefslogtreecommitdiff
path: root/res/res_pjsip_session.c
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2013-10-13 15:42:20 +0000
committerJoshua Colp <jcolp@digium.com>2013-10-13 15:42:20 +0000
commitb47851264e506de8a20e4c7be4adcc8262c0b22a (patch)
tree597bee26edd140c77cc9b484245cdc01e4a2958c /res/res_pjsip_session.c
parent1a0a2b3e4c43c28c720812f162da811a68d630d2 (diff)
Fix a race condition in res_pjsip_session with rapidly terminating the session.
The INVITE session state callback wrongly assumes that a session will always exist, but when rapidly terminating the session this assumption goes out the window. As all handler code for the INVITE session state callback requires the session it will now just exit immediately if no session exists. (closes issue ASTERISK-22668) Reported by: John Bigelow ........ Merged revisions 400872 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@400873 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res/res_pjsip_session.c')
-rw-r--r--res/res_pjsip_session.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c
index a186bf67c..4dae4b483 100644
--- a/res/res_pjsip_session.c
+++ b/res/res_pjsip_session.c
@@ -1814,6 +1814,10 @@ static void session_inv_on_state_changed(pjsip_inv_session *inv, pjsip_event *e)
print_debug_details(inv, NULL, e);
+ if (!session) {
+ return;
+ }
+
switch(e->type) {
case PJSIP_EVENT_TX_MSG:
handle_outgoing(session, e->body.tx_msg.tdata);