[asterisk-dev] [Code Review] app_directed_pickup Implement the ability to remove a channel group on bridged channel
irroot
reviewboard at asterisk.org
Thu May 26 13:03:11 CDT 2011
> On 2011-05-26 12:00:55, rmudgett wrote:
> > /trunk/main/channel.c, lines 6445-6450
> > <https://reviewboard.asterisk.org/r/1118/diff/7/?file=16740#file16740line6445>
> >
> > The defined locking order is the channels container then the channel. This is not the correct way to fix the deadlock.
>
> rmudgett wrote:
> Is the original deadlock still possible?
i will put a log message on if you want and try catch it ...
i have seen this regualarly under the following circumstances
ring all group 5+ phones not attended in evenings simultaneous pickups triggered ...
ast_channel_masquerade is called with channel locked it should not be ...
/*!
* \brief Masquerade a channel
*
* \note Assumes _NO_ channels and _NO_ channel pvt's are locked. If a channel is locked while calling
* this function, it invalidates our channel container locking order. All channels
* must be unlocked before it is permissible to lock the channels' ao2 container.
*/
now with ao2_callback_find locking and unlocking channels and channels this deadlock is possible AFAIK
the recent changes did not sort out this possible problem due to it been locked going in...
- irroot
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1118/#review3626
-----------------------------------------------------------
On 2011-05-26 03:58:55, irroot wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1118/
> -----------------------------------------------------------
>
> (Updated 2011-05-26 03:58:55)
>
>
> Review request for Asterisk Developers.
>
>
> Summary
> -------
>
> as a companion to 0018825 to aid with the move from call-limits to channel group variables. the problem with pickup and queue is that they manage channels outside the dialplan and need "helpers" to deal with channel groups.
>
> in the case of pickup when a call is placed to a extension with say a "<EXTEN>@called" channel group when it is picked up this needs to be cleared to allow further calls when call waiting is disabled.
>
> exten => s,n,GotoIf($[$[${ GROUP_COUNT(${ARG1}@called)} >= 1] | $[${GROUP_COUNT(${ARG1}@caller)} >= 1] | $[${GROUP_COUNT(${ARG1}@pickup)} >= 1] | $[${GROUP_COUNT(${ARG1}@qagent)} >= 1]]?s-BUSY,1)
>
> where
> caller is set when a call is placed.
> called is set when a call is received
> pickup is set when before calling pickup in the dialplan
> qagent is set with patch to queue
>
> Hope this is found to be useful and finds a home in trunk.
>
> not sure what time to put in the "wait for bridge" perhaps there is a better method ??
>
>
> This addresses bug 18830.
> https://issues.asterisk.org/view.php?id=18830
>
>
> Diffs
> -----
>
> /trunk/apps/app_directed_pickup.c 320772
> /trunk/main/channel.c 320772
>
> Diff: https://reviewboard.asterisk.org/r/1118/diff
>
>
> Testing
> -------
>
>
> Thanks,
>
> irroot
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20110526/2eee09b8/attachment-0001.htm>
More information about the asterisk-dev
mailing list