diff --git a/main/bridge_channel.c b/main/bridge_channel.c index 7e058af3c06ae2953fc1c5a2bfabd06d8ce1a06a..9d3934fae5d77d9a4b873c7802ff20788bbb69a6 100644 --- a/main/bridge_channel.c +++ b/main/bridge_channel.c @@ -3017,6 +3017,9 @@ int bridge_channel_internal_join(struct ast_bridge_channel *bridge_channel) ast_debug(1, "Channel %s simulating UNHOLD for bridge end.\n", ast_channel_name(bridge_channel->chan)); ast_indicate(bridge_channel->chan, AST_CONTROL_UNHOLD); + // leaving channel with Ref > 2 cause it is not destroyed during hangup + while (2 < ao2_ref(bridge_channel->chan, 0)) + ao2_ref(bridge_channel->chan, -1); } /* Complete any partial DTMF digit before exiting the bridge. */