[asterisk-dev] [Code Review] Allow non-normal execution routines to be able to run on hungup channels.

rmudgett reviewboard at asterisk.org
Wed Jun 13 16:19:22 CDT 2012


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1984/
-----------------------------------------------------------

(Updated June 13, 2012, 4:19 p.m.)


Review request for Asterisk Developers.


Changes
-------

Made predial routines on the callee channel without supplied context or exten use the needed value from the caller channel.  The added support will allow similar relative hangup handler references to get the missing context or exten from the channel adding the handler at the time it is added.


Summary
-------

* Make non-normal dialplan execution routines be able to run on a hung up channel.  This is preparation work for hangup handler routines.

* Fixes non-normal execution routines like connected line interception and predial leaving the dialplan execution stack unbalanced.  Errors like missing Return statements, popping too many stack frames using StackPop, or an application returning non-zero could leave the dialplan stack unbalanced.

* Make Hangup set a softhangup flag.  The Hangup application used to just return -1 to cause normal dialplan execution to hangup a channel.  For the non-normal execution routines like predial and connected-line interception routines, the hangup request would be ignored.


Diffs (updated)
-----

  /trunk/apps/app_dial.c 368898 
  /trunk/apps/app_followme.c 368898 
  /trunk/apps/app_queue.c 368898 
  /trunk/apps/app_stack.c 368898 
  /trunk/include/asterisk/app.h 368898 
  /trunk/main/app.c 368898 
  /trunk/main/ccss.c 368898 
  /trunk/main/channel.c 368898 
  /trunk/main/pbx.c 368898 

Diff: https://reviewboard.asterisk.org/r/1984/diff


Testing
-------

* Used the Fred application to test running a non-normal execution routine while a channel is hung up.  (The Fred routine will be removed since it is only for testing.)
* Checked StackPop being used too many times on non-normal routines.
* Checked forgetting Return on a non-normal routine.
* Checked using Hangup in a non-normal routine causes the channel to be hung up.


Thanks,

rmudgett

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20120613/2613de83/attachment.htm>


More information about the asterisk-dev mailing list