[OpenSIPS-Users] R: R: R: R: R: serialize_branches() and q value....
Bogdan-Andrei Iancu
bogdan at voice-system.ro
Thu Mar 5 10:25:05 CET 2009
Do you use usrloc module with DB_MODE 3 (DB_ONLY) and manually add the
records in the location table? If so, what is the exact content you put
in the table? (maybe the q value is not properly filled).
Regards,
Bogdan
Mauro Davi' wrote:
> Yes, if I invoke lookup(location) more than one time...
>
> -----Messaggio originale-----
> Da: Bogdan-Andrei Iancu [mailto:bogdan at voice-system.ro]
> Inviato: martedì 3 marzo 2009 18:34
> A: Mauro Davi'
> Cc: users at lists.opensips.org
> Oggetto: Re: R: R: [OpenSIPS-Users] R: R: serialize_branches() and q value....
>
> you mean by lookup(location) ?
>
> Regards,
> Bogdan
>
> Mauro Davi' wrote:
>
>> Hi Bogdan,
>>
>> yes I did in this way... But the problem, I think, is that the qvalue aren't loaded correctly from the DB.
>>
>> Regards,
>> MD
>>
>> -----Messaggio originale-----
>> Da: Bogdan-Andrei Iancu [mailto:bogdan at voice-system.ro]
>> Inviato: martedì 3 marzo 2009 18:06
>> A: Mauro Davi'
>> Cc: users at lists.opensips.org
>> Oggetto: Re: R: [OpenSIPS-Users] R: R: serialize_branches() and q value....
>>
>> Hi Mauro,
>>
>> serialize_branches() just prepare the sets.
>>
>> To use the sets (for each q value) you need to call next_branches().
>>
>> So, the algorithm should be like this:
>>
>> route{
>> serialize_branches()
>>
>> next_branches();
>>
>> t_on_failure("1");
>>
>> t_relay();
>> }
>>
>> failure_route[1]{
>> if ( next_branches() )
>> t_relay();
>> }
>>
>> Regards,
>> Bogdan
>>
>> Mauro Davi' wrote:
>>
>>
>>> 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