Revision
16736
Author
anthm
Date
2010-02-23 11:00:17 -0600 (Tue, 23 Feb 2010)

Log Message

FSCORE-556

Modified Paths

Diff

Modified: freeswitch/trunk/src/switch_ivr_bridge.c (16735 => 16736)


--- freeswitch/trunk/src/switch_ivr_bridge.c	2010-02-23 15:57:53 UTC (rev 16735)
+++ freeswitch/trunk/src/switch_ivr_bridge.c	2010-02-23 17:00:17 UTC (rev 16736)
@@ -390,26 +390,29 @@
 			switch_channel_hangup(chan_a, SWITCH_CAUSE_ALLOTTED_TIMEOUT);
 		}
 
-		if (!ans_a && originator) {
-
-			if (!ans_b && switch_channel_test_flag(chan_b, CF_ANSWERED)) {
-				switch_channel_pass_callee_id(chan_b, chan_a);
-				if (switch_channel_answer(chan_a) != SWITCH_STATUS_SUCCESS) {
-					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Media Establishment Failed.\n", switch_channel_get_name(chan_a));
-					goto end_of_bridge_loop;
+		if (!ans_a) {
+			if (originator) {
+				if (!ans_b && switch_channel_test_flag(chan_b, CF_ANSWERED)) {
+					switch_channel_pass_callee_id(chan_b, chan_a);
+					if (switch_channel_answer(chan_a) != SWITCH_STATUS_SUCCESS) {
+						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Media Establishment Failed.\n", switch_channel_get_name(chan_a));
+						goto end_of_bridge_loop;
+					}
+					ans_a = 1;
+				} else if (!pre_b && switch_channel_test_flag(chan_b, CF_EARLY_MEDIA)) {
+					if (switch_channel_pre_answer(chan_a) != SWITCH_STATUS_SUCCESS) {
+						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Media Establishment Failed.\n", switch_channel_get_name(chan_a));
+						goto end_of_bridge_loop;
+					}
+					pre_b = 1;
 				}
-				ans_a = 1;
-			} else if (!pre_b && switch_channel_test_flag(chan_b, CF_EARLY_MEDIA)) {
-				if (switch_channel_pre_answer(chan_a) != SWITCH_STATUS_SUCCESS) {
-					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Media Establishment Failed.\n", switch_channel_get_name(chan_a));
-					goto end_of_bridge_loop;
+				if (!pre_b) {
+					switch_yield(10000);
+					continue;
 				}
-				pre_b = 1;
+			} else {
+				ans_a = switch_channel_test_flag(chan_b, CF_ANSWERED);
 			}
-			if (!pre_b) {
-				switch_yield(10000);
-				continue;
-			}
 		}
 
 		if (ans_a != ans_b) {