switch_channel_t *peer_channel = switch_core_session_get_channel(peer_session);
if (dtmf->digit == '#') {
+ switch_channel_hangup(peer_channel, SWITCH_CAUSE_NORMAL_CLEARING);
return SWITCH_STATUS_FALSE;
}
switch_core_session_reset(session_a, SWITCH_TRUE, SWITCH_TRUE);
switch_channel_set_variable(chan_a, SWITCH_BRIDGE_VARIABLE, NULL);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "BRIDGE THREAD DONE [%s]\n", switch_channel_get_name(chan_a));
- if (!inner_bridge) {
- switch_channel_clear_flag(chan_a, CF_BRIDGED);
- }
+ switch_channel_clear_flag(chan_a, CF_BRIDGED);
switch_core_session_kill_channel(session_b, SWITCH_SIG_BREAK);
switch_core_session_rwunlock(session_b);
return NULL;
switch_cond_next();
}
+ if (inner_bridge) {
+ if (switch_channel_ready(caller_channel)) {
+ switch_channel_set_flag(caller_channel, CF_BRIDGED);
+ }
+
+ if (switch_channel_ready(peer_channel)) {
+ switch_channel_set_flag(peer_channel, CF_BRIDGED);
+ }
+ }
+
if ((cause = switch_channel_get_cause(caller_channel))) {
switch_channel_set_variable(peer_channel, SWITCH_BRIDGE_HANGUP_CAUSE_VARIABLE, switch_channel_cause2str(cause));
}