[asterisk-dev] asterisk 10 & softhangup
Paul Albrecht
palbrecht at glccom.com
Fri Feb 15 12:59:00 CST 2013
On Feb 15, 2013, at 12:10 PM, Richard Mudgett <rmudgett at digium.com> wrote:
>> On Feb 15, 2013, at 11:41 AM, Richard Mudgett <rmudgett at digium.com>
>> wrote:
>>
>>>> I noticed a change in ast_softhangup after moving to asterisk 10.
>>>> Now
>>>> asterisk doesn't continue to the next priority after a soft hangup
>>>> which doesn't make much sense. Is this an feature or bug?
>>>
>>> Either svn revisions
>>> -r190423 Changes channels to ref counted objects
>>> -r225244 Add support for OBJ_MULTIPLE
>>>
>>> Causes the issue. The app does not continue in the dialplan if no
>>> channels are found to hangup or there was a memory allocation
>>> error.
>>>
>>> Its a bug.
>>
>> That's what I thought. What about ast_channel_clear_softhangup? Why
>> does it need to go through the readq?
>> The only thing ast_softhangup queues is a null frame and I thought
>> they're supposed to be ignored.
>
> There is a comment in ast_channel_clear_softhangup() that says why.
> There is another comment in __ast_read() where the AST_CONTROL_END_OF_Q
> control frame is put in the read queue that gives even more information.
>
> Basically, when ast_read() sees a hangup, there may be pending frames
> in the read queue so it puts a control frame in the read queue to know
> when all pending frames have been read and to block any more frames
> from being put on the read queue. ast_read() will then return a NULL
> to indicate a hangup.
>
I don't see why the control frame is needed. The application waiting on its read wakes up when the null frame queued by ast_softhangup is received. The application read fails in asterisk ast_read because the channel indicates a soft hangup. The applications finishes whatever it's doing, returns, and control goes back to the pbx to select the next application to run.
> Please create a JIRA issue[1] for the app_softhangup application bug.
>
> Richard
>
> [1] https://issues.asterisk.org/jira
>
> --
> _____________________________________________________________________
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>
> asterisk-dev mailing list
> To UNSUBSCRIBE or update options visit:
> http://lists.digium.com/mailman/listinfo/asterisk-dev
More information about the asterisk-dev
mailing list