summaryrefslogtreecommitdiff
path: root/main/bridge_basic.c
diff options
context:
space:
mode:
authorScott Griepentrog <sgriepentrog@digium.com>2014-12-19 17:26:34 +0000
committerScott Griepentrog <sgriepentrog@digium.com>2014-12-19 17:26:34 +0000
commit6a99df47c09e9d9f51ea6afba76b259832eadb51 (patch)
tree59c85814f67aabfdacf6167e06a3cec649203425 /main/bridge_basic.c
parentb22c833c12d69a84fd6e6d33f4529fbc6e37dd47 (diff)
bridge: avoid leaking channel during blond transfer
After a blond transfer (start attended and hang up) to a destination that also hangs up without answer, the Local;1 channel was leaked and would show up on core show channels. This was happening because the attended state blond_nonfinal_enter() resetting the props->transfer_target to null while releasing it's own reference, which would later prevent props from releasing another reference during destruction. The change made here is simply to not assign the target to NULL. ASTERISK-24513 #close Reported by: Mark Michelson Review: https://reviewboard.asterisk.org/r/4262/ ........ Merged revisions 429826 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429827 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/bridge_basic.c')
-rw-r--r--main/bridge_basic.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/main/bridge_basic.c b/main/bridge_basic.c
index 084212b32..b5305a61f 100644
--- a/main/bridge_basic.c
+++ b/main/bridge_basic.c
@@ -2263,7 +2263,8 @@ static int blond_nonfinal_enter(struct attended_transfer_properties *props)
props->superstate = SUPERSTATE_RECALL;
props->recall_target = ast_channel_ref(props->transfer_target);
res = blond_enter(props);
- props->transfer_target = ast_channel_unref(props->transfer_target);
+ /* transfer properties holds a separate reference to transfer_target, don't set it to NULL here */
+ ast_channel_unref(props->transfer_target);
return res;
}