[Freeswitch-svn] [commit] r5474 - freeswitch/branches/spditner/trunk/src
Author: spditner Date: Tue Jun 26 13:11:35 2007 New Revision: 5474 Modified: freeswitch/branches/spditner/trunk/src/switch_ivr.c Log: Patch to allow transfers to work when hangup_after_bridge=true Modified: freeswitch/branches/spditner/trunk/src/switch_ivr.c ============================================================================== --- freeswitch/branches/spditner/trunk/src/switch_ivr.c (original) +++ freeswitch/branches/spditner/trunk/src/switch_ivr.c Tue Jun 26 13:11:35 2007 @@ -897,8 +897,14 @@ switch_core_session_rwunlock(other_session); } - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BRIDGE_VARIABLE)) - && (other_session = switch_core_session_locate(uuid))) { + /* If HANGUP_AFTER_BRIDGE is set to 'true', SWITCH_SIGNAL_BRIDGE_VARIABLE + * will not have a value, so we need to check SWITCH_BRIDGE_VARIABLE */ + uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BRIDGE_VARIABLE); + if(!uuid) { + uuid = switch_channel_get_variable(channel, SWITCH_BRIDGE_VARIABLE); + } + + if (uuid && (other_session = switch_core_session_locate(uuid))) { other_channel = switch_core_session_get_channel(other_session); assert(other_channel != NULL); @@ -908,6 +914,10 @@ switch_channel_set_variable(channel, SWITCH_BRIDGE_VARIABLE, NULL); switch_channel_set_variable(other_channel, SWITCH_BRIDGE_VARIABLE, NULL); + /* If we are transferring the CALLER out of the bridge, we do not want + to hang up on them */ + switch_channel_set_variable(channel, SWITCH_HANGUP_AFTER_BRIDGE_VARIABLE, "false"); + switch_channel_hangup(other_channel, SWITCH_CAUSE_BLIND_TRANSFER); switch_ivr_media(uuid, SMF_NONE);
participants (1)
-
Freeswitch SVN