tech_pvt = switch_core_session_get_private(session);
assert(tech_pvt != NULL);
+ if (!tech_pvt->zchan) {
+ goto end;
+ }
zap_channel_clear_token(tech_pvt->zchan, switch_core_session_get_uuid(session));
break;
}
+ end:
+
switch_clear_flag_locked(tech_pvt, TFLAG_IO);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL HANGUP\n", switch_channel_get_name(channel));
break;
case ZAP_SIGEVENT_STOP:
{
+ private_t *tech_pvt = NULL;
while((session = zap_channel_get_session(sigmsg->channel, 0))) {
+ tech_pvt = switch_core_session_get_private(session);
+ tech_pvt->zchan = NULL;
zap_channel_clear_token(sigmsg->channel, 0);
channel = switch_core_session_get_channel(session);
switch_channel_hangup(channel, sigmsg->channel->caller_data.hangup_cause);
break;
case ZAP_SIGEVENT_STOP:
{
+ private_t *tech_pvt = NULL;
switch_call_cause_t cause = SWITCH_CAUSE_NORMAL_CLEARING;
if (sigmsg->channel->token_count) {
switch_core_session_t *session_a, *session_b, *session_t = NULL;
}
while((session = zap_channel_get_session(sigmsg->channel, 0))) {
+ tech_pvt = switch_core_session_get_private(session);
+ tech_pvt->zchan = NULL;
channel = switch_core_session_get_channel(session);
switch_channel_hangup(channel, cause);
zap_channel_clear_token(sigmsg->channel, switch_core_session_get_uuid(session));
/* on_call_disconnect from the R2 side */
case ZAP_SIGEVENT_STOP:
{
+ private_t *tech_pvt = NULL;
while((session = zap_channel_get_session(sigmsg->channel, 0))) {
+ tech_pvt = switch_core_session_get_private(session);
+ tech_pvt->zchan = NULL;
channel = switch_core_session_get_channel(session);
switch_channel_hangup(channel, sigmsg->channel->caller_data.hangup_cause);
zap_channel_clear_token(sigmsg->channel, switch_core_session_get_uuid(session));
case ZAP_SIGEVENT_STOP:
case ZAP_SIGEVENT_RESTART:
{
+ private_t *tech_pvt = NULL;
while((session = zap_channel_get_session(sigmsg->channel, 0))) {
+ tech_pvt = switch_core_session_get_private(session);
+ tech_pvt->zchan = NULL;
channel = switch_core_session_get_channel(session);
switch_channel_hangup(channel, sigmsg->channel->caller_data.hangup_cause);
zap_channel_clear_token(sigmsg->channel, switch_core_session_get_uuid(session));