[Asterisk-code-review] bridge_simple.c: Unhold channels on join simple bridge. (asterisk[18])
Sean Bright
asteriskteam at digium.com
Tue Apr 26 11:52:56 CDT 2022
Sean Bright has uploaded this change for review. ( https://gerrit.asterisk.org/c/asterisk/+/18440 )
Change subject: bridge_simple.c: Unhold channels on join simple bridge.
......................................................................
bridge_simple.c: Unhold channels on join simple bridge.
Patch provided inline by Yury Kirsanov on the linked issue and
approved by Josh Colp.
ASTERISK-29253 #close
Change-Id: I5b9ccc67ebf06e875ed061d9e7fc21f47b0a4e1f
---
M bridges/bridge_simple.c
1 file changed, 21 insertions(+), 0 deletions(-)
git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/40/18440/1
diff --git a/bridges/bridge_simple.c b/bridges/bridge_simple.c
index 1e224f7..ba300ed 100644
--- a/bridges/bridge_simple.c
+++ b/bridges/bridge_simple.c
@@ -128,6 +128,7 @@
struct ast_stream_topology *new_top;
struct ast_channel *c0 = AST_LIST_FIRST(&bridge->channels)->chan;
struct ast_channel *c1 = AST_LIST_LAST(&bridge->channels)->chan;
+ int unhold_c0, unhold_c1;
/*
* If this is the first channel we can't make it compatible...
@@ -152,9 +153,29 @@
SWAP(c0, c1);
}
new_top = simple_bridge_request_stream_topology_update(existing_top, req_top);
+
+ /* The ast_channel_hold_state() and ast_channel_name() accessors need to be
+ * called with the associated channel lock held.
+ */
+ if ((unhold_c1 = ast_channel_hold_state(c1) == AST_CONTROL_HOLD)) {
+ ast_debug(1, "Channel %s simulating UNHOLD for bridge simple join.\n", ast_channel_name(c1));
+ }
+
+ if ((unhold_c0 = ast_channel_hold_state(c0) == AST_CONTROL_HOLD)) {
+ ast_debug(1, "Channel %s simulating UNHOLD for bridge simple join.\n", ast_channel_name(c0));
+ }
+
ast_channel_unlock(c0);
ast_channel_unlock(c1);
+ if (unhold_c1) {
+ ast_indicate(c1, AST_CONTROL_UNHOLD);
+ }
+
+ if (unhold_c0) {
+ ast_indicate(c0, AST_CONTROL_UNHOLD);
+ }
+
if (!new_top) {
/* Failure. We'll just have to live with the current topology. */
return 0;
--
To view, visit https://gerrit.asterisk.org/c/asterisk/+/18440
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings
Gerrit-Project: asterisk
Gerrit-Branch: 18
Gerrit-Change-Id: I5b9ccc67ebf06e875ed061d9e7fc21f47b0a4e1f
Gerrit-Change-Number: 18440
Gerrit-PatchSet: 1
Gerrit-Owner: Sean Bright <sean at seanbright.com>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20220426/478568a0/attachment.html>
More information about the asterisk-code-review
mailing list