diff --git a/main/bridge_channel.c b/main/bridge_channel.c index 92ad660eac0000621c9daae38ccd42846a80d2fe..1aa82abfcaa5a892493d73c1d5dcf5724adc0e6c 100644 --- a/main/bridge_channel.c +++ b/main/bridge_channel.c @@ -1527,8 +1527,9 @@ void bridge_channel_internal_pull(struct ast_bridge_channel *bridge_channel) * outgoing channel, clear the outgoing flag. */ if (ast_test_flag(ast_channel_flags(bridge_channel->chan), AST_FLAG_OUTGOING) - && (ast_channel_softhangup_internal_flag(bridge_channel->chan) & - (AST_SOFTHANGUP_ASYNCGOTO | AST_SOFTHANGUP_UNBRIDGE))) { + && (ast_channel_softhangup_internal_flag(bridge_channel->chan) & (AST_SOFTHANGUP_ASYNCGOTO | AST_SOFTHANGUP_UNBRIDGE) + || bridge_channel->state == BRIDGE_CHANNEL_STATE_WAIT)) { + ast_debug(2, "Channel %s will survive this bridge; clearing outgoing (dialed) flag\n", ast_channel_name(bridge_channel->chan)); ast_clear_flag(ast_channel_flags(bridge_channel->chan), AST_FLAG_OUTGOING); }