diff -ru asterisk-13.21.0/main/bridge_channel.c asterisk-13.21.0_changed/main/bridge_channel.c --- asterisk-13.21.0/main/bridge_channel.c 2018-05-28 14:33:51.116018117 +0200 +++ asterisk-13.21.0_changed/main/bridge_channel.c 2018-05-28 14:35:11.988964598 +0200 @@ -2648,6 +2648,7 @@ int res = 0; struct ast_bridge_features *channel_features; struct ast_channel *swap; + uint8_t indicate_src_change = 0; ast_debug(1, "Bridge %s: %p(%s) is joining\n", bridge_channel->bridge->uniqueid, @@ -2715,7 +2716,7 @@ */ 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); @@ -2725,6 +2726,10 @@ 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) {