[Freeswitch-svn] [commit] r9947 - freeswitch/trunk/src/mod/endpoints/mod_sofia
Freeswitch SVN
mikej at freeswitch.org
Fri Oct 10 18:22:42 EDT 2008
Author: mikej
Date: Fri Oct 10 18:22:41 2008
New Revision: 9947
Modified:
freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
Log:
add error handling for when we get response to a invite that we don't have a session for (session timer after session destroyed?)
Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c (original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Fri Oct 10 18:22:41 2008
@@ -2149,6 +2149,29 @@
}
}
}
+
+ 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);
+ }
+
+ }
}
More information about the Freeswitch-svn
mailing list