diff --git a/src/switch_ivr.c b/src/switch_ivr.c
index 69f77808c1..8c0f3226c9 100644
--- a/src/switch_ivr.c
+++ b/src/switch_ivr.c
@@ -1690,6 +1690,9 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_session_transfer(switch_core_session_
 
 		switch_channel_set_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE, NULL);
 
+		/* Set CF_TRANSFER flag before hanging up bleg to avoid race condition */
+		switch_channel_set_flag(channel, CF_TRANSFER);
+
 		/* 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 */
 
@@ -1725,8 +1728,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_session_transfer(switch_core_session_
 		}
 
 		switch_channel_set_caller_profile(channel, new_profile);
-		switch_channel_set_flag(channel, CF_TRANSFER);
-		
+
 		switch_channel_set_state(channel, CS_ROUTING);
 
 		msg.message_id = SWITCH_MESSAGE_INDICATE_TRANSFER;