]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FSCORE-556
authorAnthony Minessale <anthony.minessale@gmail.com>
Tue, 23 Feb 2010 17:00:17 +0000 (17:00 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Tue, 23 Feb 2010 17:00:17 +0000 (17:00 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16736 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/switch_ivr_bridge.c

index f3438272baba1fdda73ae58596a097592b87e085..15c66bc7fe364b47db2ac6c672e9ba007efa4072 100644 (file)
@@ -390,25 +390,28 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj)
                        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;
-                       }
-                       if (!pre_b) {
-                               switch_yield(10000);
-                               continue;
+                       } else {
+                               ans_a = switch_channel_test_flag(chan_b, CF_ANSWERED);
                        }
                }