[OpenSIPS-Users] URI PARSING

Bogdan-Andrei Iancu bogdan at voice-system.ro
Fri Jul 9 20:09:34 CEST 2010


In SIP requests there are 2 ways to define the "expires" val for a 
contact : a global one, via the "Expires" header or a local one, via the 
"expires" parameter for Contact hdr.

So, each device may choose one of these options, not necessarily 
defining both....that's way you see the $ct.fields(expires) NULL, 
because your device uses the EXPIRES header.

Regards,
Bogdan


Premalatha Kuppan wrote:
> Also, $ct.fields(expires) is always null
>
> xlog("---- contact expires=$ct.fields(expires) ;  header expires = 
> $hdr(Expires) \n");
> _
> OUTPUT:_
> During Registration:
>  ---- contact expires=<null> ;  header expires =1800
>
> During De-Registration:
>  ---- contact expires=<null> ;  header expires = 0
>
> On Fri, Jul 9, 2010 at 1:47 PM, Premalatha Kuppan 
> <premalatha at ngintech.com <mailto:premalatha at ngintech.com>> wrote:
>
>     Thanks Bogdan.
>
>     It was throwing me errors.
>     Now i used the following to check de-registration. It works.
>
>     if( is_present_hf("Expires") && $(hdr(Expires){s.int
>     <http://s.int>})==0)
>
>     BTW, how to differentiate registration and RE-registration request ?
>
>
>     On Fri, Jul 9, 2010 at 1:01 PM, Bogdan-Andrei Iancu
>     <bogdan at voice-system.ro <mailto:bogdan at voice-system.ro>> wrote:
>
>         Try:
>
>
>                xlog("---- contact expire=$ct.fields(expires) ;  header
>         expire =
>         $hdr(Expires) \n");
>                if ($ct.fields(expires)) == '0' || $hdr(Expires)=="0")
>                     xlog("L_ERR", "De-registration\n");
>
>         Regards,
>         Bogdan
>
>         Premalatha Kuppan wrote:
>         > I couldn't understand.
>         >
>         > I used $ct.fields(expires).
>         >
>         >         if ($ct.fields(expires)) == '0')
>         >              xlog("L_ERR", "De-registration\n");
>         >
>         >         else
>         >               perform some operation
>         >         exit;
>         >
>         > But its not working though.
>         >
>         > I want to differentiate register and de-register SIP
>         request. Thought
>         > expires field in contact header would hold good. Is there
>         any other way?
>         >
>         > What is the mistake iam doing ?
>         >
>         > On Fri, Jul 9, 2010 at 2:49 AM, Richard Revels
>         <rrevels at bandwidth.com <mailto:rrevels at bandwidth.com>
>         > <mailto:rrevels at bandwidth.com
>         <mailto:rrevels at bandwidth.com>>> wrote:
>         >
>         >     Ha!  Never thought about both being present when I wrote
>         that.
>         >      Thank you.
>         >
>         >
>         >     On Jul 8, 2010, at 4:47 PM, Bogdan-Andrei Iancu wrote:
>         >
>         >     > Hi Richard,
>         >     >
>         >     > actually the logic should be the other way around -
>         the "per
>         >     contact"
>         >     > expire (if present)  has higher priority over the
>         header Expire.
>         >     >
>         >     > Regards,
>         >     > Bogdan
>         >     >
>         >     > Richard Revels wrote:
>         >     >>        #this next part logs an error if the message
>         has no expires
>         >     >> info (scanner messages sent directly to proxy for
>         instance)
>         >     >>        if(is_present_hf("Expires"))
>         >     >>                $avp(i:10) := $hdr(Expires);
>         >     >>        else
>         >     >>                $avp(i:10) := $ct.fields(expires);
>         >     >>        if( $avp(i:10)  == "0" )
>         >     >>        {
>         >     >> ...
>         >     >>
>         >     >>
>         >     >> Speaking of this, using a min_expires param to the
>         registrar module
>         >     >> seems to defeat allowing users to unregister by sending a
>         >     expires of
>         >     >> zero.  I seem to remember it gets bumped to the min
>         value.  If
>         >     true, I
>         >     >> think there should be a check added in the minimum
>         time check
>         >     to let
>         >     >> zero sneak through as is and remove the user from
>         userloc table.
>         >     >>
>         >     >> Richard
>         >     >>
>         >     >>
>         >     >> On Jul 8, 2010, at 5:33 AM, Premalatha Kuppan wrote:
>         >     >>
>         >     >>> Hi,
>         >     >>>
>         >     >>> How do i check expiration for user, meaning to identify
>         >     de-registration.
>         >     >>> When user is de-registred; then the request comes with
>         >     expires=0; how
>         >     >>> to get this field and check in opensips.cfg file ?
>         >     >>>
>         >     >>> Any help ?
>         >     >>>
>         >     >>> Thanks,
>         >     >>> Prem
>         >     >>>
>         >     >>>
>         >     >>> On Wed, Jul 7, 2010 at 7:42 PM, Premalatha Kuppan
>         >     >>> <premalatha at ngintech.com
>         <mailto:premalatha at ngintech.com>
>         <mailto:premalatha at ngintech.com <mailto:premalatha at ngintech.com>>
>         >     <mailto:premalatha at ngintech.com
>         <mailto:premalatha at ngintech.com>
>         <mailto:premalatha at ngintech.com
>         <mailto:premalatha at ngintech.com>>>>
>         >     wrote:
>         >     >>>
>         >     >>>    Thanks to all.
>         >     >>>
>         >     >>>    Its working now using $tu and avp_db_query.
>         >     >>>
>         >     >>>     $var(x)=$(tu{uri.user});
>         >     >>>                    avp_db_query("INSERT INTO TESTTABLE
>         >     (xxx,yyy,zzz)
>         >     >>>
>         >    
>          VALUES('$(var(x){s.select,0,_})','$(var(x){s.select,1,_})','$(var(x){s.select,2,_})')");
>         >     >>>
>         >     >>>    Now, have to look how to remove these entries during
>         >     de-registration.
>         >     >>>
>         >     >>>    Thanks,
>         >     >>>    Prem
>         >     >>>
>         >     >>>
>         >     >>>
>         >     >>>    On Wed, Jul 7, 2010 at 5:05 PM, Bogdan-Andrei Iancu
>         >     >>>    <bogdan at voice-system.ro
>         <mailto:bogdan at voice-system.ro> <mailto:bogdan at voice-system.ro
>         <mailto:bogdan at voice-system.ro>>
>         >     <mailto:bogdan at voice-system.ro
>         <mailto:bogdan at voice-system.ro> <mailto:bogdan at voice-system.ro
>         <mailto:bogdan at voice-system.ro>>>>
>         >     wrote:
>         >     >>>
>         >     >>>        Premalatha Kuppan wrote:
>         >     >>>> Thanks. Corrected teh opensips.cfg file
>         >     >>>>
>         >     >>>> But the problem was due to this. by default DB URL was
>         >     >>>        NULL. Now i
>         >     >>>> have added the DB URL for avpops.
>         >     >>>> # default URL
>         >     >>>>
>         modparam("avpops","db_url","mysql://user:passwd@host/database")
>         >     >>>>
>         >     >>>>
>         >     >>>>
>         >     >>>> But the value of $rU is NULL..am i placing it in wrong
>         >     >>>        location?
>         >     >>>
>         >     >>>        In REGISTER requests, the RURI has only
>         domain part
>         >     >>>        (sip:opensips.org <http://opensips.org>
>         <http://opensips.org>
>         >     <http://opensips.org/>)
>         >     >>>        so it is normal to have $rU NULL. If you need to
>         >     identity of
>         >     >>>        the user
>         >     >>>        who registered, according to SIP, you have to
>         look at
>         >     the TO
>         >     >>>        URI - so
>         >     >>>        use $tu to get TO uri and use the URI
>         transformation if you
>         >     >>>        want to
>         >     >>>        split in in username and domain (see
>         >     >>>      
>          http://www.opensips.org/Resources/DocsCoreTran16#toc17 ).
>         >     >>>
>         >     >>>
>         >     >>>        Regards,
>         >     >>>        Bogdan
>         >     >>>
>         >     >>>> I want the userpart e.g: sip:userpart at domain is the
>         >     >>>        request uri; i
>         >     >>>> need only userpart . I believe that would be stored
>         in $rU;
>         >     >>>        but tis
>         >     >>>> coming as NULL. Which variable or where should i
>         place this
>         >     >>>        command
>         >     >>>> for registration and de-registration.
>         >     >>>>
>         >     >>>> Any Idea ?
>         >     >>>>
>         >     >>>> On Wed, Jul 7, 2010 at 4:13 PM, mayamatakeshi
>         >     >>>        <mayamatakeshi at gmail.com
>         <mailto:mayamatakeshi at gmail.com>
>         >     <mailto:mayamatakeshi at gmail.com
>         <mailto:mayamatakeshi at gmail.com>>
>         <mailto:mayamatakeshi at gmail.com <mailto:mayamatakeshi at gmail.com>
>         >     <mailto:mayamatakeshi at gmail.com
>         <mailto:mayamatakeshi at gmail.com>>>
>         >     >>>> <mailto:mayamatakeshi at gmail.com
>         <mailto:mayamatakeshi at gmail.com>
>         <mailto:mayamatakeshi at gmail.com <mailto:mayamatakeshi at gmail.com>>
>         >     >>>        <mailto:mayamatakeshi at gmail.com
>         <mailto:mayamatakeshi at gmail.com>
>         >     <mailto:mayamatakeshi at gmail.com
>         <mailto:mayamatakeshi at gmail.com>>>>> wrote:
>         >     >>>>
>         >     >>>>
>         >     >>>>
>         >     >>>>    On Wed, Jul 7, 2010 at 7:32 PM, Premalatha Kuppan
>         >     >>>>    <premalatha at ngintech.com
>         <mailto:premalatha at ngintech.com>
>         <mailto:premalatha at ngintech.com <mailto:premalatha at ngintech.com>>
>         >     >>>        <mailto:premalatha at ngintech.com
>         <mailto:premalatha at ngintech.com>
>         >     <mailto:premalatha at ngintech.com
>         <mailto:premalatha at ngintech.com>>>
>         >     >>>        <mailto:premalatha at ngintech.com
>         <mailto:premalatha at ngintech.com>
>         >     <mailto:premalatha at ngintech.com
>         <mailto:premalatha at ngintech.com>>
>         >     >>>        <mailto:premalatha at ngintech.com
>         <mailto:premalatha at ngintech.com>
>         >     <mailto:premalatha at ngintech.com
>         <mailto:premalatha at ngintech.com>>>>> wrote:
>         >     >>>>
>         >     >>>>        Hi,
>         >     >>>>
>         >     >>>>        Iam using avp_db_query, but opensips is dead
>         with
>         >     >>>        following error,
>         >     >>>>
>         >     >>>>        During Registration, when the user is
>         registered. I
>         >     >>>        have to
>         >     >>>>        parse and store th value in DB. So, included the
>         >     >>>        avp_db_query
>         >     >>>>        in this loop. Is this right one to do. I
>         assume the
>         >     >>>        value of
>         >     >>>>        rU is NULL over here, probably its failing.
>         Not sure :(
>         >     >>>>
>         >     >>>>        Any insight  ?
>         >     >>>>
>         >     >>>>        if (is_method("REGISTER"))
>         >     >>>>                {
>         >     >>>>                        # authenticate the REGISTER
>         requests
>         >     >>>>        (uncomment to enable auth)
>         >     >>>>                        if
>         (!www_authorize("10.140.1.110",
>         >     >>>        "subscriber"))
>         >     >>>>                        {
>         >     >>>>
>         >     >>>        www_challenge("10.140.1.110", "0");
>         >     >>>>                                exit;
>         >     >>>>                        }
>         >     >>>>
>         >     >>>>                     #  if (!db_check_to())
>         >     >>>>                     #  {
>         >     >>>>                     #
>         >     >>>         sl_send_reply("403","Forbidden auth ID");
>         >     >>>>                     #          exit;
>         >     >>>>                     #  }
>         >     >>>>
>         >     >>>>                        if (!save("location"))
>         >     >>>>                                sl_reply_error();
>         >     >>>>
>         >     >>>>                        $var(x) = $rU ;
>         >     >>>>                        avp_db_query("INSERT INTO
>         TESTTABLE
>         >     >>>>        (xxx,yyy,zzz)
>         >     >>>>
>         >     >>>
>         >    
>          VALUES('$(var(x){s.select,0,_})','$var(x)({s.select,1,_})','$(var(x){s.select,2,_})'");
>         >     >>>>                        exit;
>         >     >>>>                }
>         >     >>>>
>         >     >>>>
>         >     >>>>        Jul  7 06:25:16 204548-4
>         >     >>>        /usr/local/sbin/opensips[17791]:
>         >     >>>>        ERROR:avpops:fixup_db_query_avp: no db url
>         defined
>         >     >>>        to be used
>         >     >>>>        by this function
>         >     >>>>        Jul  7 06:25:16 204548-4
>         >     >>>        /usr/local/sbin/opensips[17791]:
>         >     >>>>        *ERROR:core:fix_actions: fixing failed
>         (code=-6) at
>         >     >>>        cfg line 351*
>         >     >>>>        Jul  7 06:25:16 204548-4
>         >     >>>        /usr/local/sbin/opensips[17791]:
>         >     >>>>        ERROR:core:main: failed to fix configuration
>         with
>         >     >>>        err code -6
>         >     >>>>
>         >     >>>>
>         >     >>>>    Clearly you misplaced the parenthesis:
>         >     >>>>
>         >     >>>>
>         >     >>>>    $(var(x){s.select,0,_})',
>         >     >>>>    '$var(x)({s.select,1,_})',
>         >     >>>>    '$(var(x){s.select,2,_})'
>         >     >>>>
>         >     >>>>
>         >     >>>>
>         >     >>>>
>         >     >>>>    _______________________________________________
>         >     >>>>    Users mailing list
>         >     >>>>    Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>
>         <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>>
>         >     >>>        <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>
>         >     <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>>>
>         >     >>>        <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>
>         >     <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>>
>         >     >>>        <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>
>         >     <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>>>>
>         >     >>>>  
>          http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>         >     >>>>
>         >     >>>>
>         >     >>>>
>         >     >>>
>         >    
>          ------------------------------------------------------------------------
>         >     >>>>
>         >     >>>> _______________________________________________
>         >     >>>> Users mailing list
>         >     >>>> Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>
>         <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>>
>         >     <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>
>         <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>>>
>         >     >>>>
>         http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>         >     >>>>
>         >     >>>
>         >     >>>
>         >     >>>        --
>         >     >>>        Bogdan-Andrei Iancu
>         >     >>>        OpenSIPS Bootcamp
>         >     >>>        20 - 24 September 2010, Frankfurt, Germany
>         >     >>>        www.voice-system.ro
>         <http://www.voice-system.ro> <http://www.voice-system.ro>
>         >     <http://www.voice-system.ro/>
>         >     >>>
>         >     >>>
>         >     >>>        _______________________________________________
>         >     >>>        Users mailing list
>         >     >>>        Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>
>         >     <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>>
>         <mailto:Users at lists.opensips.org <mailto:Users at lists.opensips.org>
>         >     <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>>>
>         >     >>>      
>          http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>         >     >>>
>         >     >>>
>         >     >>>
>         >     >>> _______________________________________________
>         >     >>> Users mailing list
>         >     >>> Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>
>         <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>>
>         >     <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>
>         <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>>>
>         >     >>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>         >     >>
>         >     >>
>         >    
>         ------------------------------------------------------------------------
>         >     >>
>         >     >> _______________________________________________
>         >     >> Users mailing list
>         >     >> Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>
>         <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>>
>         >     >> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>         >     >>
>         >     >
>         >     >
>         >     > --
>         >     > Bogdan-Andrei Iancu
>         >     > OpenSIPS Bootcamp
>         >     > 20 - 24 September 2010, Frankfurt, Germany
>         >     > www.voice-system.ro <http://www.voice-system.ro>
>         <http://www.voice-system.ro>
>         >     >
>         >     >
>         >     > _______________________________________________
>         >     > Users mailing list
>         >     > Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>
>         <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>>
>         >     > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>         >
>         >
>         >     _______________________________________________
>         >     Users mailing list
>         >     Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>
>         <mailto:Users at lists.opensips.org
>         <mailto:Users at lists.opensips.org>>
>         >     http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>         >
>         >
>         >
>         ------------------------------------------------------------------------
>         >
>         > _______________________________________________
>         > Users mailing list
>         > Users at lists.opensips.org <mailto:Users at lists.opensips.org>
>         > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>         >
>
>
>         --
>         Bogdan-Andrei Iancu
>         OpenSIPS Bootcamp
>         20 - 24 September 2010, Frankfurt, Germany
>         www.voice-system.ro <http://www.voice-system.ro>
>
>
>         _______________________________________________
>         Users mailing list
>         Users at lists.opensips.org <mailto:Users at lists.opensips.org>
>         http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>   


-- 
Bogdan-Andrei Iancu
OpenSIPS Bootcamp
20 - 24 September 2010, Frankfurt, Germany
www.voice-system.ro




More information about the Users mailing list