add error handling for when we get response to a invite that we don't have a session for (session timer after session destroyed?)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9947 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
a2fab2d914
commit
75a21db6bb
|
@ -2149,6 +2149,29 @@ static void sofia_handle_sip_r_invite(switch_core_session_t *session, int status
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!session && (status == 180 || status == 183 || status == 200)) {
|
||||
/* This should never happen. It means the sip stack thinks there is a call but FreeSWITCH does not */
|
||||
const char *callid = "n/a";
|
||||
|
||||
if (sip && sip->sip_call_id && sip->sip_call_id->i_id) callid = sip->sip_call_id->i_id;
|
||||
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "received response to invite with no matching session, destroying callid [%s]!\n", callid);
|
||||
|
||||
if (nh) {
|
||||
if (status == 200) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Sending BYE to orphan call.\n");
|
||||
nua_bye(nh, TAG_END());
|
||||
} else {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Sending CANCEL to orphan call.\n");
|
||||
nua_cancel(nh, TAG_END());
|
||||
}
|
||||
|
||||
nua_handle_bind(nh, NULL);
|
||||
nua_handle_destroy(nh);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue