[asterisk-dev] [Code Review] Triggers dialplan actions when specific CONTROL_FRAMES are detected on a channel

Joshua Colp reviewboard at asterisk.org
Thu Mar 1 07:28:29 CST 2012


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


I think there is a fundamental issue with this feature. By executing the Gosub in the thread that is calling the frame hook you may block another channel when executing. This is unacceptable as frames or network traffic will continue to accumulate. The execution time for frame hooks are supposed to be short lived for this reason. This probably hasn't been an issue since what you have been doing in the Gosub has been small but other people may do more time consuming things.


/trunk/funcs/func_frame_trigger.c
<https://reviewboard.asterisk.org/r/1778/#comment10414>

    When this executes if the channel already has a PBX running it will be destroyed, have you tested that scenario? Due to the way Gosub works it *may* be fine afterwards... since it stores the original details...


- Joshua


On Feb. 29, 2012, 10:02 a.m., Marco Signorini wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1778/
> -----------------------------------------------------------
> 
> (Updated Feb. 29, 2012, 10:02 a.m.)
> 
> 
> Review request for Asterisk Developers.
> 
> 
> Summary
> -------
> 
> A filter can be applied to the trigger to limit frames sensibility. This filter can either be a white or black list of control frame types. When no filter type is present, white is used. If no arguments are provided at all, all frames will trigger the specified gosub call.
> If the specified gosub extension is not present on the dialplan, the function will gosub to the "s-XXXX" extension in the gosub context where XXXX is the type of the control frame.
> It can be set only once on a given channel.
> 
> Examples:
> exten => 1,1,Set(FRAME_TRIGGER(white, CONTROL_HOLD)=ext,context); trigger gosub ext-CONTROL_HOLD at context only for HOLD type control frames
> exten => 1,1,Set(FRAME_TRIGGER(black, CONTROL_HOLD)=ext,context); trigger gosub ext-CONTROL_XXXX at context for all control type frames except for HOLD type control frames
> exten => 1,1,Set(FRAME_TRIGGER(CONTROL_HOLD, CONTROL_UNHOLD)=context) ; trigger gosub to s-CONTROL_HOLD at context and s-CONTROL_UNHOLD context only for HOLD and UNHOLD type control frames
> 
> This feature was originally developed in order to track MOH events in a call center environment but has general interest.
> 
> 
> This addresses bug ASTERISK-19319.
>     https://issues.asterisk.org/jira/browse/ASTERISK-19319
> 
> 
> Diffs
> -----
> 
>   /trunk/funcs/func_frame_trigger.c PRE-CREATION 
> 
> Diff: https://reviewboard.asterisk.org/r/1778/diff
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Marco
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20120301/204cdbe7/attachment.htm>


More information about the asterisk-dev mailing list