[asterisk-dev] [Code Review] 4262: bridge: channel ref leak on blond_nonfinal_enter
Scott Griepentrog
reviewboard at asterisk.org
Tue Dec 16 15:06:05 CST 2014
> On Dec. 12, 2014, 6:30 p.m., rmudgett wrote:
> > /branches/12/main/bridge_basic.c, lines 2262-2264
> > <https://reviewboard.asterisk.org/r/4262/diff/1/?file=69672#file69672line2262>
> >
> > Without looking further, the channel refs here seem to be mismatched.
The recall_target is created and destroyed by the transfer code only, so that is a correct implementation.
However the transfer_target has a reference to it that must be cleaned up on destruction of props-> structure, so to set it to NULL at this point is incorrect.
Because ast_channel_unref always returns NULL, the pattern of x=unref(x) only works where there is only one reference held to x in the context of x's lifetime, which is not the case here.
- Scott
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/4262/#review13959
-----------------------------------------------------------
On Dec. 12, 2014, 4:10 p.m., Scott Griepentrog wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/4262/
> -----------------------------------------------------------
>
> (Updated Dec. 12, 2014, 4:10 p.m.)
>
>
> Review request for Asterisk Developers.
>
>
> Bugs: ASTERISK-24513
> https://issues.asterisk.org/jira/browse/ASTERISK-24513
>
>
> Repository: Asterisk
>
>
> Description
> -------
>
> After a blond transfer to a destination that then hangs up, the Local;1 channel would suffer a reference leak. This was due to blond_nonfinal_enter() resetting the props->transfer_target to NULL as it unref'd the channel for itself, later preventing the attended_transfer_properties_destructor() from releasing it's own reference, which was inherited during ast_bridge_impart with INDEPDENDENT.
>
> This change prevents props->transfer_target from being set to NULL, and thus eliminates the leak.
>
>
> Diffs
> -----
>
> /branches/12/main/bridge_basic.c 429516
>
> Diff: https://reviewboard.asterisk.org/r/4262/diff/
>
>
> Testing
> -------
>
> Newly created test 'atxfer_fail_blonde' (https://reviewboard.asterisk.org/r/4256/) now passes. No other new test failures encountered.
>
>
> Thanks,
>
> Scott Griepentrog
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20141216/b27f0b51/attachment-0001.html>
More information about the asterisk-dev
mailing list