[commit] r14011 - in freeswitch/trunk/contrib/mod/endpoints/mod_khomp: . include
Author: raulfragoso Date: Sat Jun 27 01:47:06 2009 New Revision: 14011 Log: No more crashes ! Modified: freeswitch/trunk/contrib/mod/endpoints/mod_khomp/include/khomp_pvt.h freeswitch/trunk/contrib/mod/endpoints/mod_khomp/mod_khomp.cpp Modified: freeswitch/trunk/contrib/mod/endpoints/mod_khomp/include/khomp_pvt.h ============================================================================== --- freeswitch/trunk/contrib/mod/endpoints/mod_khomp/include/khomp_pvt.h (original) +++ freeswitch/trunk/contrib/mod/endpoints/mod_khomp/include/khomp_pvt.h Sat Jun 27 01:47:06 2009 @@ -54,6 +54,7 @@ K3LAPI::target tgt(Globals::_k3lapi, K3LAPI::target::CHANNEL, dev, obj); KhompPvt * pvt = new KhompPvt(tgt); _pvts.back().push_back(pvt); + Globals::_k3lapi.command(dev, obj, CM_DISCONNECT, NULL); } } } Modified: freeswitch/trunk/contrib/mod/endpoints/mod_khomp/mod_khomp.cpp ============================================================================== --- freeswitch/trunk/contrib/mod/endpoints/mod_khomp/mod_khomp.cpp (original) +++ freeswitch/trunk/contrib/mod/endpoints/mod_khomp/mod_khomp.cpp Sat Jun 27 01:47:06 2009 @@ -1048,17 +1048,23 @@ } break; case EV_DISCONNECT: - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Called party dropped the call on: %u. Releasing channel. [EV_DISCONNECT]\n", obj); - if (channel_on_hangup(KhompPvt::khompPvt(e->DeviceId, obj)->session()) != SWITCH_STATUS_SUCCESS) - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Could not hangup channel: %u on board %u. Releasing board channel anyway. [EV_DISCONNECT]\n", obj, e->DeviceId); - try - { - Globals::_k3lapi.command(e->DeviceId, obj, CM_DISCONNECT, NULL); - KhompPvt::khompPvt(e->DeviceId, obj)->session(NULL); - } - catch(K3LAPI::invalid_channel & err) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not send CM_DISCONNECT!\n"); + switch_core_session_t * session = KhompPvt::khompPvt(e->DeviceId, obj)->session(); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Called party dropped the call on: %u. Releasing channel. [EV_DISCONNECT]\n", obj); + if(session == NULL) + break; + + if (channel_on_hangup(session) != SWITCH_STATUS_SUCCESS) + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Could not hangup channel: %u on board %u. Releasing board channel anyway. [EV_DISCONNECT]\n", obj, e->DeviceId); + try + { + Globals::_k3lapi.command(e->DeviceId, obj, CM_DISCONNECT, NULL); + KhompPvt::khompPvt(e->DeviceId, obj)->session(NULL); + } + catch(K3LAPI::invalid_channel & err) + { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not send CM_DISCONNECT!\n"); + } } break; case EV_CONNECT:
participants (1)
-
FreeSWITCH SVN