FS-6637 try this instead

This commit is contained in:
Anthony Minessale 2014-07-01 23:59:40 +05:00
parent 0f017814dd
commit 1518240bab

View File

@ -1119,19 +1119,22 @@ static switch_status_t signal_bridge_on_hangup(switch_core_session_t *session)
const char *var; const char *var;
if (!zstr(sbv) && !strcmp(sbv, switch_core_session_get_uuid(session))) { if (!zstr(sbv) && !strcmp(sbv, switch_core_session_get_uuid(session))) {
int hup = 1;
switch_channel_set_variable(other_channel, SWITCH_SIGNAL_BRIDGE_VARIABLE, NULL); switch_channel_set_variable(other_channel, SWITCH_SIGNAL_BRIDGE_VARIABLE, NULL);
switch_channel_set_variable(other_channel, SWITCH_BRIDGE_VARIABLE, NULL); switch_channel_set_variable(other_channel, SWITCH_BRIDGE_VARIABLE, NULL);
switch_channel_set_variable(other_channel, "call_uuid", switch_core_session_get_uuid(other_session)); switch_channel_set_variable(other_channel, "call_uuid", switch_core_session_get_uuid(other_session));
if (switch_channel_up_nosig(other_channel)) { if (switch_channel_up_nosig(other_channel)) {
if (switch_true(switch_channel_get_variable(other_channel, SWITCH_PARK_AFTER_BRIDGE_VARIABLE))) { if (switch_true(switch_channel_get_variable(other_channel, SWITCH_PARK_AFTER_BRIDGE_VARIABLE))) {
switch_ivr_park_session(other_session); switch_ivr_park_session(other_session);
hup = 0;
} else if ((var = switch_channel_get_variable(other_channel, SWITCH_TRANSFER_AFTER_BRIDGE_VARIABLE))) { } else if ((var = switch_channel_get_variable(other_channel, SWITCH_TRANSFER_AFTER_BRIDGE_VARIABLE))) {
transfer_after_bridge(other_session, var); transfer_after_bridge(other_session, var);
hup = 0;
} }
if (hup) {
if (switch_channel_test_flag(other_channel, CF_BRIDGE_ORIGINATOR)) { if (switch_channel_test_flag(other_channel, CF_BRIDGE_ORIGINATOR)) {
if (switch_channel_test_flag(channel, CF_ANSWERED) && if (switch_channel_test_flag(channel, CF_ANSWERED) &&
switch_true(switch_channel_get_variable(other_channel, SWITCH_HANGUP_AFTER_BRIDGE_VARIABLE))) { switch_true(switch_channel_get_variable(other_channel, SWITCH_HANGUP_AFTER_BRIDGE_VARIABLE))) {
@ -1151,6 +1154,7 @@ static switch_status_t signal_bridge_on_hangup(switch_core_session_t *session)
} }
} }
} }
}
if (switch_channel_test_flag(channel, CF_BRIDGE_ORIGINATOR)) { if (switch_channel_test_flag(channel, CF_BRIDGE_ORIGINATOR)) {
switch_channel_clear_flag_recursive(channel, CF_BRIDGE_ORIGINATOR); switch_channel_clear_flag_recursive(channel, CF_BRIDGE_ORIGINATOR);