summaryrefslogtreecommitdiff
path: root/main/bridge.c
diff options
context:
space:
mode:
authorzuul <zuul@gerrit.asterisk.org>2016-04-25 21:08:15 -0500
committerGerrit Code Review <gerrit2@gerrit.digium.api>2016-04-25 21:08:15 -0500
commit807a765cfb924aca07936379b9802e141f833d38 (patch)
tree48e8a36f57ee0e76a844762eae7a4f3adcddc8a5 /main/bridge.c
parent456600a641f0caa4ea778d94a4d93c161f44d288 (diff)
parent71dfa355403e41850fd7c4cb4228626e5d9476b9 (diff)
Merge "bridge_softmix.c: Fix crash if channel fails to join mixing tech."
Diffstat (limited to 'main/bridge.c')
-rw-r--r--main/bridge.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/main/bridge.c b/main/bridge.c
index 7e7205274..c28d49c02 100644
--- a/main/bridge.c
+++ b/main/bridge.c
@@ -420,10 +420,12 @@ static void bridge_channel_complete_join(struct ast_bridge *bridge, struct ast_b
bridge->technology->name);
if (bridge->technology->join
&& bridge->technology->join(bridge, bridge_channel)) {
- ast_debug(1, "Bridge %s: %p(%s) failed to join %s technology\n",
+ /* We cannot leave the channel partially in the bridge so we must kick it out */
+ ast_debug(1, "Bridge %s: %p(%s) failed to join %s technology (Kicking it out)\n",
bridge->uniqueid, bridge_channel, ast_channel_name(bridge_channel->chan),
bridge->technology->name);
bridge_channel->just_joined = 1;
+ ast_bridge_channel_leave_bridge(bridge_channel, BRIDGE_CHANNEL_STATE_END, 0);
return;
}