Author: anthm Date: Fri Dec 7 11:11:50 2007 New Revision: 6565 Modified: freeswitch/trunk/src/switch_ivr_bridge.c Log: don't hangup when transfering Modified: freeswitch/trunk/src/switch_ivr_bridge.c ============================================================================== --- freeswitch/trunk/src/switch_ivr_bridge.c (original) +++ freeswitch/trunk/src/switch_ivr_bridge.c Fri Dec 7 11:11:50 2007 @@ -464,8 +464,10 @@ switch_channel_set_variable(channel, SWITCH_BRIDGE_VARIABLE, NULL); switch_channel_set_variable(other_channel, SWITCH_BRIDGE_VARIABLE, NULL); - if (switch_channel_test_flag(other_channel, CF_ANSWERED) && switch_channel_get_state(other_channel) < CS_HANGUP - && switch_true(switch_channel_get_variable(other_channel, SWITCH_HANGUP_AFTER_BRIDGE_VARIABLE))) { + if (switch_channel_test_flag(other_channel, CF_ANSWERED) && + switch_channel_get_state(other_channel) < CS_HANGUP && + !switch_channel_test_flag(other_channel, CF_TRANSFER) && + switch_true(switch_channel_get_variable(other_channel, SWITCH_HANGUP_AFTER_BRIDGE_VARIABLE))) { switch_channel_hangup(other_channel, switch_channel_get_cause(channel)); } else { switch_channel_set_state(other_channel, CS_EXECUTE); @@ -684,6 +686,7 @@ if (switch_channel_test_flag(peer_channel, CF_ANSWERED) && switch_channel_get_state(caller_channel) < CS_HANGUP && + !switch_channel_test_flag(caller_channel, CF_TRANSFER) && switch_true(switch_channel_get_variable(caller_channel, SWITCH_HANGUP_AFTER_BRIDGE_VARIABLE))) { switch_channel_hangup(caller_channel, switch_channel_get_cause(peer_channel)); }