[asterisk-dev] [Code Review] Add FEATURE() and FEATUREMAP() functions.

Mark Michelson reviewboard at asterisk.org
Tue Apr 24 15:48:23 CDT 2012


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


Almost there!


/trunk/main/features.c
<https://reviewboard.asterisk.org/r/1871/#comment11089>

    Update the documentation to reflect that other items than atxfer and blindxfer can be set. Other items to add: automon, disconnect, parkcall, and automixmon.



/trunk/main/features.c
<https://reviewboard.asterisk.org/r/1871/#comment11090>

    s/ot/to/



/trunk/main/features.c
<https://reviewboard.asterisk.org/r/1871/#comment11088>

    We always use width limiters on sscanf calls (usually something safe like 30) due to some vulnerability that I don't remember the details of. http://seclists.org/fulldisclosure/2009/Aug/155 has more details.



/trunk/main/features.c
<https://reviewboard.asterisk.org/r/1871/#comment11091>

    I once again recommend changing the label name since this section is reached for both error and non-error situations.



/trunk/main/features.c
<https://reviewboard.asterisk.org/r/1871/#comment11087>

    Setting res to -1 here is redundant.


- Mark


On April 21, 2012, 2:41 a.m., Russell Bryant wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1871/
> -----------------------------------------------------------
> 
> (Updated April 21, 2012, 2:41 a.m.)
> 
> 
> Review request for Asterisk Developers.
> 
> 
> Summary
> -------
> 
> This patch adds two new dialplan functions: FEATURE() and FEATUREMAP().
> FEATURE() is indended to be used to allow customizing general feature
> settings on a per-channel basis.  It currently allows you to set a
> custom parkingtime for a channel.
> 
> FEATUREMAP() is similar, but allows customizing the built-in feature
> mappings on a per-channel basis.  Currently you can customize the digit
> string for activating blind or attended transfers.
> 
> More options and feature mappings could be added to this over time as
> desired.
> 
> 
> Diffs
> -----
> 
>   /trunk/main/features.c 363044 
> 
> Diff: https://reviewboard.asterisk.org/r/1871/diff
> 
> 
> Testing
> -------
> 
> Using the following dialplan:
> 
> 1) Dial 101, make sure normal transfers work (I tested transferring to 100).
> 2) Dial 102, make sure transfers using channel specific feature mappings work.
> 3) Dial 101, transfer to parking and observe normal parkingtime.
> 4) Dial 103, transfer to parking and verify that the custom parkingtime is used.
> 
> 
> [featuretest]
> 
> include => parkedcalls
> 
> ; Dummy extension for a Local channel.  We'll call this and transfer it.
> exten => foo,1,Answer()
>     same => n(wait),Wait(300)
>     same => n,Goto(wait)
> 
> ; Transfer target.
> exten => 100,1,Answer()
>     same => n(wait),Wait(300)
>     same => n,Goto(wait)
> 
> ; Call this and make sure blindxfer and atxfer still work using default mappings.
> exten => 101,1,Answer()
>     same => n,Verbose(0,Regular transfer test.)
>     same => n,Verbose(0,Blind Transfer: ${FEATUREMAP(blindxfer)})
>     same => n,Verbose(0,Attended Transfer: ${FEATUREMAP(atxfer)})
>     same => n,Dial(Local/foo at featuretest,,tT)
> 
> ; Call this and make sure blindxfer and atxfer work with custom mappings.
> exten => 102,1,Answer()
>     same => n,Verbose(0,Custom transfer test.)
>     same => n,Verbose(0,Setting blindxfer to '77' and atxfer to '88')
>     same => n,Set(FEATUREMAP(blindxfer)=77)
>     same => n,Set(FEATUREMAP(atxfer)=88)
>     same => n,Verbose(0,Blind Transfer: ${FEATUREMAP(blindxfer)})
>     same => n,Verbose(0,Attended Transfer: ${FEATUREMAP(atxfer)})
>     same => n,Dial(Local/foo at featuretest,,tT)
> 
> ; Test setting a parkingtime.  Start with calling '101' and then parking.
> ; Then, call this and verify that the new parkingtime is used.
> exten => 103,1,Answer()
>     same => n,Verbose(0,Test custom parkingtime.)
>     same => n,Verbose(0,Blind Transfer: ${FEATUREMAP(blindxfer)})
>     same => n,Dial(Local/foo at featuretest,,tTU(setparkingtime^3))
> 
> 
> ; GoSub routine for setting parkingtime on a dialed channel.
> [setparkingtime]
> 
> exten => s,1,Verbose(0,Setting custom parkingtime to '${ARG1}')
>     same => n,Verbose(0,Old value: ${FEATURE(parkingtime)})
>     same => n,Set(FEATURE(parkingtime)=${ARG1})
>     same => n,Verbose(0,New value: ${FEATURE(parkingtime)})
>     same => n,Return()
> 
> 
> Thanks,
> 
> Russell
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20120424/e8b07acd/attachment-0001.htm>


More information about the asterisk-dev mailing list