From 3891a953cf4f242f6de9d28bf410e3a6672fee1c Mon Sep 17 00:00:00 2001 From: Kevin Harwell Date: Wed, 13 Nov 2019 17:24:48 -0600 Subject: [PATCH] bridge_softmix: clear hold when joining a softmix bridge MOH continues to play to a channel if that channel was on hold prior to entering a softmix bridge. MOH will not stop even if the original "holder" attempts an unhold. For the most part a softmix bridge ignores holds, so a participating channel shouldn't join while on hold. This patch checks to see if the channel joining the softmix bridge is currently on hold. If so then it indicates an unhold. ASTERISK-28618 Change-Id: I66ccd4efc80f5b4c3dd68186b379eb442916392b --- bridges/bridge_softmix.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bridges/bridge_softmix.c b/bridges/bridge_softmix.c index a90c7169d5..d907084cf1 100644 --- a/bridges/bridge_softmix.c +++ b/bridges/bridge_softmix.c @@ -726,6 +726,13 @@ static int softmix_bridge_join(struct ast_bridge *bridge, struct ast_bridge_chan sfu_topologies_on_join(bridge, bridge_channel); } + /* Complete any active hold before entering, or transitioning to softmix. */ + if (ast_channel_hold_state(bridge_channel->chan) == AST_CONTROL_HOLD) { + ast_debug(1, "Channel %s simulating UNHOLD for bridge softmix join.\n", + ast_channel_name(bridge_channel->chan)); + ast_indicate(bridge_channel->chan, AST_CONTROL_UNHOLD); + } + softmix_poke_thread(softmix_data); return 0; } -- 2.47.2