From 2b3b300e4b4bf0eb73506115cffec4a2d4d33717 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Fri, 3 Aug 2007 16:46:21 +0000 Subject: [PATCH] fix for FSCORE-34 git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5564 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/switch_ivr.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/switch_ivr.c b/src/switch_ivr.c index e80ce70c87..6e25ecddf0 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -890,8 +890,17 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_session_transfer(switch_core_session_ switch_channel_set_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE, NULL); - if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_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))) { switch_channel_set_variable(other_channel, SWITCH_SIGNAL_BOND_VARIABLE, NULL); switch_core_session_rwunlock(other_session); } @@ -906,6 +915,9 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_session_transfer(switch_core_session_ 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);