diff --git a/main/bridge_channel.c b/main/bridge_channel.c index 3c5e87b574a5b519f073e238a6325d8c0184a25f..34dd7feeb600ad079bca21984c239021e8d0ee68 100644 --- a/main/bridge_channel.c +++ b/main/bridge_channel.c @@ -3013,6 +3013,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. */