diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index 164d2a6921..53f1037d88 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -89,9 +89,6 @@ static void *audio_bridge_thread(switch_thread_t * thread, void *obj) } if ((b_state = switch_channel_get_state(chan_b)) >= CS_HANGUP) { - if (originator && !ans_a && !ans_b) { - switch_channel_hangup(chan_a, switch_channel_get_cause(chan_b)); - } break; } @@ -183,6 +180,12 @@ static void *audio_bridge_thread(switch_thread_t * thread, void *obj) } } + if (switch_channel_get_state(chan_b) >= CS_HANGUP) { + if (originator && switch_channel_ready(chan_a) && !switch_channel_test_flag(chan_a, CF_ANSWERED)) { + switch_channel_hangup(chan_a, switch_channel_get_cause(chan_b)); + } + } + msg.string_arg = data->b_uuid; msg.message_id = SWITCH_MESSAGE_INDICATE_UNBRIDGE; msg.from = __FILE__;