[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