From f7e7f0629991fee30922192d6df1216037c8625e Mon Sep 17 00:00:00 2001
From: Hemlata Bhatt <hemlata.bhatt@iopsys.eu>
Date: Wed, 24 Nov 2021 14:43:21 +0100
Subject: [PATCH] Fix for hangup in 3 way conference call

---
 channels/chan_brcm.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/channels/chan_brcm.c b/channels/chan_brcm.c
index 2c2d031868..8e7ffc903f 100644
--- a/channels/chan_brcm.c
+++ b/channels/chan_brcm.c
@@ -4391,11 +4391,13 @@ static int brcm_create_conference(struct brcm_pvt *p)
 	// Move second call into first bridge and wait for it to finish.
 	chanToKick[0] = second->owner;
         
+        pvt_lock(second->parent, "moving call to first bridge");
         if(onholdBridge && secondBridge)
 	res = ast_bridge_merge(onholdBridge, secondBridge, 0, chanToKick, 1);
 	while(ast_bridge_find_by_id(second->conference_id)) sched_yield();
+        pvt_unlock(second->parent);
 
-	// SIP calls need unhold sent to the bridge as well.
+        // SIP calls need unhold sent to the bridge as well.
 	astFrame.frametype = AST_FRAME_CONTROL;
 	astFrame.subclass.integer = AST_CONTROL_UNHOLD;
 	ast_bridge_queue_everyone_else(onholdBridge, NULL, &astFrame);
-- 
GitLab