[OpenSIPS-Users] R: R: R: serialize_branches() and q value....

Mauro Davi' mauro.davi at acotel.com
Mon Mar 2 18:01:56 CET 2009


Hi Bodan,

I think that the serial fork have some problem.

On the DB I modified the q value of two user

User1, qvalue=0.1
User2, qvalue=0.2

I insert in the script the following line of code:

$ru=user1 at domain.com
Lookup("location");
Append_branch();
$ru=user2 at domain.com
Lookup("location");
Serialize_branches();
T_relay();

The result was:

Mar  2 17:36:53 [26014] DBG:core:serialize_branches: loaded <sip:user1 at 192.168.193.54:6685;rinstance=0f314641b36adb7d>, q=-1 q_flag <0>
Mar  2 17:36:53 [26014] DBG:core:serialize_branches: loaded <sip:user2 at 192.168.193.73:54218;rinstance=e70bfc2dadad8857>, q=100 q_flag <16>

The call are correctly serialized but if I add three destinations the result was:

Mar  2 17:42:04 [26014] DBG:core:serialize_branches: loaded <sip:user1 at 192.168.193.54:6685;rinstance=0f314641b36adb7d>, q=-1 q_flag <0>
Mar  2 17:42:04 [26014] DBG:core:serialize_branches: loaded <sip:user2 at 192.168.193.73:54218;rinstance=e70bfc2dadad8857>, q=-1 q_flag <0>
Mar  2 17:42:04 [26014] DBG:core:serialize_branches: loaded <sip:user3 at 192.168.193.71:54218;rinstance=e70bfc2dadad8857>, q=100 q_flag <16>

The qvalue aren't inserted correctly...

Is it a bug?

Thanks in advance
	MD

-----Messaggio originale-----
Da: users-bounces at lists.opensips.org [mailto:users-bounces at lists.opensips.org] Per conto di Bogdan-Andrei Iancu
Inviato: giovedì 26 febbraio 2009 19:08
A: Mauro Davi'
Cc: users at lists.opensips.org
Oggetto: Re: [OpenSIPS-Users] R: R: serialize_branches() and q value....

Hi Mauro,

you have to ways to go:

1) use the @domain.com URIs and relay them back to your proxy in order 
to do lookup

2) try to do lookup directly in the first step - the logic you tried. 
But to work replace the
          append_branch("$ru","0.1");
    with
          append_branch();

 this will take the RURI and add it as a branch, so you can override it 
with the next user2 URI.

Regards,
Bogdan

Mauro Davi' wrote:
> Hi Bogdan,
>
> I have a little problem...
>
> In this way I can serialize a set of know called party (i.e. with the sip address in the form sip:username at ipaddress:port)...
>
> But I cannot add, for example the following branch:
>
> Append_branch("sip:user1 at domain.com","0.1")
> Append_branch("sip:user2 at domain.com","0.2")
> Append_branch("sip:user3 at domain.com","0.3")
>
> Because the result is a misrouted call (i.e. the requested sip uri isn't reacheable...).
>
> So I thought to add a RURI after invoked the lookup function...
>
> Somethink like this:
>
> $ru="sip:user1 at domain.com";
> lookup("location");
> #Now $ru contain the resolved URI of user1
> append_branch("$ru","0.1");
> $ru="sip:user2 at domain.com";
> lookup("location");
> #Now $ru contain the resolved URI of user2
> append_branch("$ru","0.2");
> $ru="sip:user3 at domain.com";
> lookup("location");
> #Now $ru contain the resolved URI of user3
> append_branch("$ru","0.3");
>
> But I didn't had the expected result... I cannot use pseudo-variable in the append_branch function...
>
> Could you tell me how I can solve this problem? There is a work-around? Or is there a correct way to call a group of user associated to a SIP URI via serial forking?
>
> Thank in andvance
> 	MD
>
> -----Messaggio originale-----
> Da: Bogdan-Andrei Iancu [mailto:bogdan at voice-system.ro] 
> Inviato: mercoledì 25 febbraio 2009 15:14
> A: Mauro Davi'
> Cc: users at lists.opensips.org
> Oggetto: Re: R: [OpenSIPS-Users] serialize_branches() and q value....
>
> Hi Mauro,
>
> (sorry for mistyping your name in the first place)
>
> the correct way to inject a q value via the append_branch is:
>     Append_branch("sip:user2 at domain.com", 10 );
>
> Regards,
> Bogdan
>
>
> Mauro Davi' wrote:
>   
>> Hi Bogdan,
>>
>> Thanks for the reply. But I have only one question...
>>
>> Is it possible to set the branches qvalue from a script code?
>>
>> I try samething like:
>>
>> Append_branch();
>> $ru="sip:user2 at domain.com;q=0.1"
>>
>> Or:
>>
>> Append_branch("sip:user2 at domain.com;q=0.1");
>>
>> But the log result is ever:
>>
>> "DBG:core:serialize_branches: nothing to do - all same q!"
>>
>> Coould you help me, please?
>>
>> Thanks a lot
>>     MD
>>
>>
>> -----Messaggio originale-----
>> Da: Bogdan-Andrei Iancu [mailto:bogdan at voice-system.ro] 
>> Inviato: mercoledì 25 febbraio 2009 14:54
>> A: Mauro Davi'
>> Cc: users at lists.opensips.org
>> Oggetto: Re: [OpenSIPS-Users] serialize_branches() and q value....
>>
>> Hi Marco,
>>
>> before getting into your script, just some important notice about SIP, 
>> forking and q value...
>>
>> According to RFC 3261 (and how the serialize_branches() works), when you 
>> have a set of destinations with different q values, the forking must 
>> work like this:
>>
>> 1) order the entire set based on the q value
>> 2) select all dsts that have as q value the min q val from the set (of 
>> course all of the selected dsts will have the q)
>> 3) do parallel forking with the selected dsts
>> 4) if still failed, remove the used dsts and go back to step 2 (serial 
>> forking).
>>
>>
>> So, this is actually a combination of serial and parallel forking - the 
>> dsts with different q will be serial forked, but dsts with the same q 
>> will be parallel forked.
>>
>> Regards,
>> Bogdan
>>
>> Mauro Davi' wrote:
>>   
>>     
>>> Hi All,
>>>
>>> I saw the documentation but it is to much difficult for me J (really I 
>>> think that the folloeing information is missed...), so I have a question.
>>>
>>> The below script code add two new destination to my voip platform, 
>>> parallel at domain.com and serial at domain.com <mailto:serial at domain.com>.
>>>
>>> The first one works great, but the second one have the same behaviour 
>>> of the first one...
>>>
>>> The question is: How I can specify the q value of every branches?
>>>
>>> Thanks in advance.
>>>
>>> MD
>>>
>>> if(uri=~"^sip:parallel@" || uri=~"^sip:serial@" )
>>>
>>> {
>>>
>>> xlog("L_INFO","Check passed!!!\n");
>>>
>>> $var(i)=0;
>>>
>>> while ($var(i) < 2)
>>>
>>> {
>>>
>>> xlog("L_INFO","Cycle Enter $var(i), RURI:$ru\n");
>>>
>>> if ($var(i) == 0)
>>>
>>> {
>>>
>>> $ru="sip:user1 at domain.com";
>>>
>>> }
>>>
>>> else
>>>
>>> {
>>>
>>> append_branch();
>>>
>>> $ru="sip:user2 at domain.com";
>>>
>>> }
>>>
>>> alias_db_lookup("dbaliases");
>>>
>>> if (is_uri_host_local())
>>>
>>> {
>>>
>>> # -- Inbound to inbound
>>>
>>> if(uri=~"^sip:[0-9]+@")
>>>
>>> {
>>>
>>> # only route numeric users to PSTN
>>>
>>> t_on_failure("2");
>>>
>>> route(5);
>>>
>>> }
>>>
>>> route(6);
>>>
>>> }
>>>
>>> else
>>>
>>> {
>>>
>>> # -- Inbound to outbound
>>>
>>> # Here we must check the to domain to verify if
>>>
>>> # we can send the request to a corporate SBC
>>>
>>> sl_send_reply("403", "Forbidden");
>>>
>>> exit;
>>>
>>> }
>>>
>>> $var(i) = $var(i) + 1;
>>>
>>> xlog("L_INFO","Cycle Leave $var(i), RURI:$ru");
>>>
>>> }
>>>
>>> if (uri=~"^sip:serial@")
>>>
>>> {
>>>
>>> setbflag(10);
>>>
>>> serialize_branches(1);
>>>
>>> }
>>>
>>> route(3);
>>>
>>> exit;
>>>
>>> }
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Users mailing list
>>> 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



More information about the Users mailing list