if (ans_a != ans_b) {
switch_channel_t *un = ans_a ? chan_b : chan_a;
+ switch_channel_t *a = un == chan_b ? chan_a : chan_b;
- if (!switch_channel_test_flag(un, CF_OUTBOUND)) {
- switch_channel_pass_callee_id(un == chan_b ? chan_a : chan_b, un);
+ if ((!switch_channel_test_flag(un, CF_OUTBOUND) && switch_channel_test_flag(a, CF_OUTBOUND)) || (un == chan_a && !originator)) {
+ switch_channel_pass_callee_id(a, un);
if (switch_channel_answer(un) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Media Establishment Failed.\n", switch_channel_get_name(un));
goto end_of_bridge_loop;
}
- }
- if (ans_a)
- ans_b = 1;
- else
- ans_a = 1;
+ if (ans_a) {
+ ans_b = 1;
+ } else {
+ ans_a = 1;
+ }
+ }
}
if (originator && !sent_update && ans_a && ans_b && switch_channel_media_ack(chan_a) && switch_channel_media_ack(chan_b)) {