[OpenSIPS-Users] drouting module with append_branch() and q-values

thrillerbee thrillerbee at gmail.com
Tue Mar 29 16:52:36 CEST 2011


Bogdan,

When I configure:
$(branch(uri)[0]) = $ru;
$(branch(q)[0]) = 100;
xlog("L_INFO","branch 0 = $(branch(uri)[0]) with q-value
$(branch(q)[0])\n");

I get this debug:
ERROR:core:pv_set_branch_fields: SCRIPT BUG - inexisting branch assigment
[0/0]
ERROR:core:do_assign: setting PV failed
ERROR:core:do_assign: error at line: 163
ERROR:core:pv_set_branch_fields: SCRIPT BUG - inexisting branch assigment
[0/0]
ERROR:core:do_assign: setting PV failed
ERROR:core:do_assign: error at line: 164
branch 0 = <null> with q-value <null>

Thanks,
Ryan


On Tue, Mar 29, 2011 at 8:19 AM, Bogdan-Andrei Iancu <bogdan at opensips.org>wrote:

> Hi,
>
> Another tricks:
>
> 1) you can read the pending destinations directly from AVPs, without
> calling the "use_next_gw()" function. See:
>   http://www.opensips.org/html/docs/modules/1.6.x/drouting.html#id293166
>
> 2) as append_branch() does not accept variables as params, use the
> "$branch" variable to write into:
>   http://www.opensips.org/Resources/DocsCoreVar16#toc15
>   like:
>      $branch = $var(x) ; #add a new SIP URI as extra branch
>      $(branch(q)[-1])  =  10 ;  # set Q val for the last added brach
>
>
> Regards,
> Bogdan
>
>
> Anca Vamanu wrote:
>
>> Hi thrillerbe,
>>
>> I think that if you only want to build the list of selected destinations,
>> you can just call use_next_gw and add the uri in RURI to a destination
>> string ( because use_next_gw sets the RURI to the destination-
>> http://www.opensips.org/html/docs/modules/devel/drouting.html#id251519).
>> It would be something like this:
>>
>> if (do_routing("1","2")) {     if ($avp(s:dr_rules_attrs) == "2")
>>    {
>>        xlog("L_INFO","After 1, ds is $ru\n");          $var(x) = 2;
>>        $var(ds) = $ru;
>>
>>        while (use_next_gw())          {              $var(ds) = $var(ds) +
>> "," + $ru;
>>            xlog("L_INFO","After $var(x), ds is $var(ds)\n");
>> $var(x) = $var(x) + 1;          }      }      xlog("L_INFO","Destination set
>> is $var(ds)\n"); }
>>
>>
>> Regards,
>> --
>> Anca Vamanu
>> OpenSIPS Developer
>>
>>
>> On 03/29/2011 01:00 AM, thrillerbee wrote:
>>
>>> I'm trying to get OpenSIPS to act as a REDIRECT server and have run into
>>> a couple issues. I'm using the drouting module to do lookups. Essentially, a
>>> dialed number could have potentially several routes, I want to return a 300
>>> with these routes in the Contact header. Please tell me if this is foolish
>>> and/or there are better methods.
>>>
>>> I'm running release version 1.6.4-2-notls.
>>>
>>> With that, I've configured the following in my script:
>>> if (do_routing("1","2"))     {      if ($avp(s:dr_rules_attrs) == "2")
>>>    {
>>>        xlog("L_INFO","After 1, ds is $ds\n");          $var(x) = 2;
>>>        while (use_next_gw())          {              append_branch();
>>>            xlog("L_INFO","After $var(x), ds is $ds\n");
>>> $var(x) = $var(x) + 1;          }      }      xlog("L_INFO","Destination set
>>> is $ds\n"); }
>>>
>>> My relevant debug output is:
>>> After 1, ds is Contact: sip:15552345678 at 1.1.1.1 <mailto:
>>> sip%3A15552345678 at 1.1.1.1> After 2, ds is Contact: *
>>> sip:2215552345678 at 2.2.2.2 <mailto:sip%3A2215552345678 at 2.2.2.2>,
>>> sip:2215552345678 at 2.2.2.2 <mailto:sip%3A2215552345678 at 2.2.2.2>* After 3,
>>> ds is Contact: *sip:5552345678 at 3.3.3.3 <mailto:sip%3A5552345678 at 3.3.3.3>*,
>>> sip:2215552345678 at 2.2.2.2 <mailto:sip%3A2215552345678 at 2.2.2.2>, *
>>> sip:5552345678 at 3.3.3.3 <mailto:sip%3A5552345678 at 3.3.3.3>* After 4, ds is
>>> Contact: *sip:15552345678 at 5.5.5.5 <mailto:sip%3A15552345678 at 5.5.5.5>*,
>>> sip:2215552345678 at 2.2.2.2 <mailto:sip%3A2215552345678 at 2.2.2.2>,
>>> sip:5552345678 at 3.3.3.3 <mailto:sip%3A5552345678 at 3.3.3.3>, *
>>> sip:15552345678 at 5.5.5.5 <mailto:sip%3A15552345678 at 5.5.5.5>* After 5, ds
>>> is Contact: *sip:4415552345678 at 4.4.4.4 <mailto:
>>> sip%3A4415552345678 at 4.4.4.4>*, sip:2215552345678 at 2.2.2.2 <mailto:
>>> sip%3A2215552345678 at 2.2.2.2>, sip:5552345678 at 3.3.3.3 <mailto:
>>> sip%3A5552345678 at 3.3.3.3>, sip:15552345678 at 5.5.5.5 <mailto:
>>> sip%3A15552345678 at 5.5.5.5>, *sip:4415552345678 at 4.4.4.4 <mailto:
>>> sip%3A4415552345678 at 4.4.4.4>*
>>> It seems that append_branch() deletes the first entry in the destination
>>> set before adding the current RURI to the beginning and end. Is there an
>>> easier or more predictable way to write to the destination set?
>>>
>>> Also, it seems the append_branch() function will not take variables or
>>> avps as parameters. Is there a known way of setting different q-values as a
>>> destination set is generated?  The below obviously doesn't work but should
>>> explain what I'm looking for:
>>>
>>> var(q) = 90;
>>> while (use_next_branch())
>>> {
>>>    append_branch("$ru","$var(q)");
>>>    $var(q) = $var(q) - 10;
>>> }
>>>
>>> Thanks,
>>> Ryan
>>>
>>>  ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>
>
>
> --
> Bogdan-Andrei Iancu
> OpenSIPS eBootcamp - 2nd of May 2011
> OpenSIPS solutions and "know-how"
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20110329/2c01b77c/attachment-0001.htm>


More information about the Users mailing list