[asterisk-dev] [Code Review] Split user options from extension in chan_sip.

David Vossel reviewboard at asterisk.org
Fri May 6 11:19:36 CDT 2011


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



/branches/1.8/channels/chan_sip.c
<https://reviewboard.asterisk.org/r/1188/#comment7159>

    This functionality really needs to live in the parse_uri function.  You've already done the work to split the user options away, so its really just a matter of using the code you already have and putting it in the right place in parse_uri.
    
    What I would recommend is this.
    
    Add a new argument to parse_uri for returning any possible user options if they exist.  Since some people might like to reconstruct those options later on go ahead and continue to store the in the uri_user_option field you created just like you are doing, but set that field outside of the parse_uri function.
    
    Since parse_uri already has a unit test started for it, add a few tests in for sip URIs containing user options to verify functionality.


- David


On 2011-04-20 15:10:16, jrose wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1188/
> -----------------------------------------------------------
> 
> (Updated 2011-04-20 15:10:16)
> 
> 
> Review request for Asterisk Developers.
> 
> 
> Summary
> -------
> 
> Adds a new option to SIP peers in order to truncate the semicolon delimited values in the URI so that devices which generate semicolon delimited values (like the Sonus mentioned in the bug report) can connect to an extension properly without forcing pattern matching and employing weird workarounds with the extension value every time it is used in the dialplan.
> 
> In order to add it to a peer, place the following in sip.conf:
> ignore_uri_sem=yes
> 
> By default it is off, naturally.
> 
> 
> This addresses bug 18344.
>     https://issues.asterisk.org/view.php?id=18344
> 
> 
> Diffs
> -----
> 
>   /branches/1.8/channels/chan_sip.c 314156 
>   /branches/1.8/channels/sip/dialplan_functions.c 314156 
>   /branches/1.8/channels/sip/include/sip.h 314156 
> 
> Diff: https://reviewboard.asterisk.org/r/1188/diff
> 
> 
> Testing
> -------
> 
> Used sipp to make a phone call using the following xml:
> --------------------------------------
> <?xml version="1.0" encoding="ISO-8859-1" ?>
> <!DOCTYPE scenario SYSTEM "sipp.dtd">
> 
> <scenario name="UAC OPTIONS">
>     <send retrans="500"> <![CDATA[
> 
>         INVITE sip:2005;phone-context=+1;npdi=yes@[remote_ip]:[remote_port] SIP/2.0
>         Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
>         From: "Lrrrr Schmrrr" <sip:sipp@[local_ip]:[local_port]>;tag=[call_number]
>         To: Asterisk <sip:2005;phone-context=+1;npdi=yes@[remote_ip]:[remote_port]>
>         Call-ID: [call_id]
>         CSeq: 1 OPTIONS
>         Contact: sip:sipp@[local_ip]:[local_port]
>         Max-Forwards: 70
>         Subject: Asterisk Testsuite
>         Content-Length: [len]
> 
>         ]]>
>     </send>
>     <recv response="200"/>
> </scenario>
> --------------------------------------
> 
> Tested those calls against dialplan as follows:
> --------------------------------------
> [sipp]
> exten => 2005,1,Answer()
> exten => 2005,2,Background(tt-weasels)
> exten => 2005,3,NoOp(callerid => ${CALLERID(all)})
> exten => 2005,n,NoOp(exten => ${EXTEN})
> exten => 2005,n,Wait(5)
> exten => 2005,n,HangUp()
> --------------------------------------
> 
> and used the following definitions of sipp in sip.conf:
> --------------------------------------
> [sipp]
> type=friend
> context=sipp
> host=dynamic
> port=6000
> user=sipp
> canreinvite=no
> diallow=all
> allow=ulaw
> ignore_uri_sem=on
> --------------------------------------
> 
> as well as ignore_uri_sem=off
> and with no ignore_uri_sem statement in the config file.
> 
> 
> Results:
> With the option on, the call gets completed as normal if the extension were just 2005.
> With the option off, the call gets interrupted with the following error message: 
> [Apr 18 14:40:58] NOTICE[16316]: chan_sip.c:21496 handle_request_invite: Call from 'sipp' to extension '2005' rejected because extension not found in context 'sipp'.
> 
> because the extension actually contains the entire URI and can't be matched in spite of it showing just 2005 above.
> 
> 
> Thanks,
> 
> jrose
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20110506/8ef5ffc3/attachment.htm>


More information about the asterisk-dev mailing list