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

Bogdan-Andrei Iancu bogdan at voice-system.ro
Wed Feb 25 14:53:44 CET 2009


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
>   




More information about the Users mailing list