[Asterisk-code-review] bridge.c: Hangup attended transfer target if bridged (asterisk[13])
Matt Jordan
asteriskteam at digium.com
Tue Jun 23 11:36:36 CDT 2015
Matt Jordan has submitted this change and it was merged.
Change subject: bridge.c: Hangup attended transfer target if bridged
......................................................................
bridge.c: Hangup attended transfer target if bridged
After completing an attended transfer the transfer target channel was not being
hung up after leaving the bridge. Added an explicit softhangup to hangup said
channel, but only if it was previously bridged.
ASTERISK-24782 #close
Reported by: John Bigelow
Change-Id: Idde9543d56842369384a5e8c00d72a22bbc39ada
---
M main/bridge.c
1 file changed, 11 insertions(+), 1 deletion(-)
Approvals:
Richard Mudgett: Looks good to me, but someone else must approve
Matt Jordan: Looks good to me, approved; Verified
Joshua Colp: Looks good to me, but someone else must approve
diff --git a/main/bridge.c b/main/bridge.c
index 6004610..75cd671 100644
--- a/main/bridge.c
+++ b/main/bridge.c
@@ -4389,6 +4389,7 @@
int do_bridge_transfer;
enum ast_transfer_result res;
const char *app = NULL;
+ int hangup_target = 0;
to_transferee_bridge = acquire_bridge(to_transferee);
to_target_bridge = acquire_bridge(to_transfer_target);
@@ -4468,7 +4469,7 @@
ast_bridge_unlock(to_transferee_bridge);
ast_bridge_unlock(to_target_bridge);
- ast_softhangup(to_transfer_target, AST_SOFTHANGUP_DEV);
+ hangup_target = 1;
goto end;
}
@@ -4511,6 +4512,11 @@
set_transfer_variables_all(to_transferee, channels, 1);
if (do_bridge_transfer) {
+ /*
+ * Hang up the target if it was bridged. Note, if it is not bridged
+ * it is hung up during the masquerade.
+ */
+ hangup_target = chan_bridged == to_transfer_target;
ast_bridge_lock(the_bridge);
res = attended_transfer_bridge(chan_bridged, chan_unbridged, the_bridge, NULL, transfer_msg);
ast_bridge_unlock(the_bridge);
@@ -4534,6 +4540,10 @@
res = AST_BRIDGE_TRANSFER_SUCCESS;
end:
+ if (res == AST_BRIDGE_TRANSFER_SUCCESS && hangup_target) {
+ ast_softhangup(to_transfer_target, AST_SOFTHANGUP_DEV);
+ }
+
transfer_msg->result = res;
ast_bridge_publish_attended_transfer(transfer_msg);
return res;
--
To view, visit https://gerrit.asterisk.org/692
To unsubscribe, visit https://gerrit.asterisk.org/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Idde9543d56842369384a5e8c00d72a22bbc39ada
Gerrit-PatchSet: 1
Gerrit-Project: asterisk
Gerrit-Branch: 13
Gerrit-Owner: Kevin Harwell <kharwell at digium.com>
Gerrit-Reviewer: Joshua Colp <jcolp at digium.com>
Gerrit-Reviewer: Matt Jordan <mjordan at digium.com>
Gerrit-Reviewer: Richard Mudgett <rmudgett at digium.com>
More information about the asterisk-code-review
mailing list