Merge "bridge_channel.c: Fix Deadlock when using Local channels and fax gateway" into 13

This commit is contained in:
Joshua Colp
2018-06-06 05:46:28 -05:00
committed by Gerrit Code Review

View File

@@ -2677,6 +2677,7 @@ static void bridge_channel_event_join_leave(struct ast_bridge_channel *bridge_ch
int bridge_channel_internal_join(struct ast_bridge_channel *bridge_channel)
{
int res = 0;
uint8_t indicate_src_change = 0;
struct ast_bridge_features *channel_features;
struct ast_channel *swap;
@@ -2746,7 +2747,7 @@ int bridge_channel_internal_join(struct ast_bridge_channel *bridge_channel)
*/
if (!(bridge_channel->bridge->technology->capabilities
& AST_BRIDGE_CAPABILITY_MULTIMIX)) {
ast_indicate(bridge_channel->chan, AST_CONTROL_SRCCHANGE);
indicate_src_change = 1;
}
bridge_channel_impart_signal(bridge_channel->chan);
@@ -2756,6 +2757,10 @@ int bridge_channel_internal_join(struct ast_bridge_channel *bridge_channel)
ao2_t_cleanup(swap, "Bridge push with swap successful");
swap = NULL;
if (indicate_src_change) {
ast_indicate(bridge_channel->chan, AST_CONTROL_SRCCHANGE);
}
bridge_channel_event_join_leave(bridge_channel, AST_BRIDGE_HOOK_TYPE_JOIN);
while (bridge_channel->state == BRIDGE_CHANNEL_STATE_WAIT) {