[asterisk-dev] [Code Review]: Two new CEL-related fixes
rmudgett
reviewboard at asterisk.org
Fri May 4 23:53:20 CDT 2012
> On May 4, 2012, 11:37 p.m., rmudgett wrote:
> > /trunk/main/channel.c, line 651
> > <https://reviewboard.asterisk.org/r/1900/diff/1/?file=27671#file27671line651>
> >
> > This should be:
> > return ast_atomic_fetchadd_int(&chancount, 0);
Technically it should be using ast_atomic_fetchadd_int() to get a guaranteed consistent value but it isn't done anywhere else in Asterisk this way.
- rmudgett
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1900/#review6159
-----------------------------------------------------------
On May 4, 2012, 6:01 p.m., Terry Wilson wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1900/
> -----------------------------------------------------------
>
> (Updated May 4, 2012, 6:01 p.m.)
>
>
> Review request for Asterisk Developers, Mark Michelson and rmudgett.
>
>
> Summary
> -------
>
> This patch fixes to situations that could cause the CEL LINKEDID_END event to be missed.
>
> 1) During a core stop gracefully, modules are unloaded when ast_active_channels == 0. The LINKDEDID_END event fires during the channel destructor. This means that occasionally, the cel_* module will be unloaded before the channel is destroyed. It seemed generally useful to wait until the refcount of all channel == 0 before unloading, so I added a channel counter and used it in the shutdown code.
>
> 2) During a masquerade, ast_channel_change_linkedid is called. It calls ast_cel_check_retire_linkedid which unrefs the linkedid in the linkedids container in cel.c. It didn't ref the new linkedid. Now it does. I also changed the logic a little, since it used to call ast_channel_linkedid_set() even when it hadn't changed (or was blank, which should be verboten).
>
> (this patch is against trunk, but it will go in 1.8+)
>
>
> Diffs
> -----
>
> /trunk/include/asterisk/cel.h 365131
> /trunk/include/asterisk/channel.h 365131
> /trunk/main/asterisk.c 365131
> /trunk/main/cel.c 365131
> /trunk/main/channel.c 365131
>
> Diff: https://reviewboard.asterisk.org/r/1900/diff
>
>
> Testing
> -------
>
> My CEL test passed 100 times or so and transferred calls no longer show an error.
>
>
> Thanks,
>
> Terry
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20120505/7edfd378/attachment-0001.htm>
More information about the asterisk-dev
mailing list