serialize_branches() and q value....

classic Classic list List threaded Threaded
18 messages Options
Reply | Threaded
Open this post in threaded view
|

serialize_branches() and q value....

Mauro Davì

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, [hidden email]  and [hidden email].

 

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:[hidden email]";

                                        }

                                        else

                                        {

                                                append_branch();

                                                $ru="sip:[hidden email]";

                                        }

                                        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
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: serialize_branches() and q value....

Bogdan-Andrei Iancu
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,
> [hidden email] and [hidden email] <mailto:[hidden email]>.
>
> 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:[hidden email]";
>
> }
>
> else
>
> {
>
> append_branch();
>
> $ru="sip:[hidden email]";
>
> }
>
> 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
> [hidden email]
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>  


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

R: serialize_branches() and q value....

Mauro Davì
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:[hidden email];q=0.1"

Or:

Append_branch("sip:[hidden email];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:[hidden email]]
Inviato: mercoledì 25 febbraio 2009 14:54
A: Mauro Davi'
Cc: [hidden email]
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,
> [hidden email] and [hidden email] <mailto:[hidden email]>.
>
> 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:[hidden email]";
>
> }
>
> else
>
> {
>
> append_branch();
>
> $ru="sip:[hidden email]";
>
> }
>
> 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
> [hidden email]
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>  


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: R: serialize_branches() and q value....

Bogdan-Andrei Iancu
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:[hidden email]", 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:[hidden email];q=0.1"
>
> Or:
>
> Append_branch("sip:[hidden email];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:[hidden email]]
> Inviato: mercoledì 25 febbraio 2009 14:54
> A: Mauro Davi'
> Cc: [hidden email]
> 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,
>> [hidden email] and [hidden email] <mailto:[hidden email]>.
>>
>> 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:[hidden email]";
>>
>> }
>>
>> else
>>
>> {
>>
>> append_branch();
>>
>> $ru="sip:[hidden email]";
>>
>> }
>>
>> 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
>> [hidden email]
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>  
>>    
>
>
>  


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

R: R: serialize_branches() and q value....

Mauro Davì
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@ipaddress:port)...

But I cannot add, for example the following branch:

Append_branch("sip:[hidden email]","0.1")
Append_branch("sip:[hidden email]","0.2")
Append_branch("sip:[hidden email]","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:[hidden email]";
lookup("location");
#Now $ru contain the resolved URI of user1
append_branch("$ru","0.1");
$ru="sip:[hidden email]";
lookup("location");
#Now $ru contain the resolved URI of user2
append_branch("$ru","0.2");
$ru="sip:[hidden email]";
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:[hidden email]]
Inviato: mercoledì 25 febbraio 2009 15:14
A: Mauro Davi'
Cc: [hidden email]
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:[hidden email]", 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:[hidden email];q=0.1"
>
> Or:
>
> Append_branch("sip:[hidden email];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:[hidden email]]
> Inviato: mercoledì 25 febbraio 2009 14:54
> A: Mauro Davi'
> Cc: [hidden email]
> 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,
>> [hidden email] and [hidden email] <mailto:[hidden email]>.
>>
>> 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:[hidden email]";
>>
>> }
>>
>> else
>>
>> {
>>
>> append_branch();
>>
>> $ru="sip:[hidden email]";
>>
>> }
>>
>> 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
>> [hidden email]
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>  
>>    
>
>
>  


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: R: R: serialize_branches() and q value....

Bogdan-Andrei Iancu
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@ipaddress:port)...
>
> But I cannot add, for example the following branch:
>
> Append_branch("sip:[hidden email]","0.1")
> Append_branch("sip:[hidden email]","0.2")
> Append_branch("sip:[hidden email]","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:[hidden email]";
> lookup("location");
> #Now $ru contain the resolved URI of user1
> append_branch("$ru","0.1");
> $ru="sip:[hidden email]";
> lookup("location");
> #Now $ru contain the resolved URI of user2
> append_branch("$ru","0.2");
> $ru="sip:[hidden email]";
> 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:[hidden email]]
> Inviato: mercoledì 25 febbraio 2009 15:14
> A: Mauro Davi'
> Cc: [hidden email]
> 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:[hidden email]", 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:[hidden email];q=0.1"
>>
>> Or:
>>
>> Append_branch("sip:[hidden email];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:[hidden email]]
>> Inviato: mercoledì 25 febbraio 2009 14:54
>> A: Mauro Davi'
>> Cc: [hidden email]
>> 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,
>>> [hidden email] and [hidden email] <mailto:[hidden email]>.
>>>
>>> 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:[hidden email]";
>>>
>>> }
>>>
>>> else
>>>
>>> {
>>>
>>> append_branch();
>>>
>>> $ru="sip:[hidden email]";
>>>
>>> }
>>>
>>> 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
>>> [hidden email]
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>  
>>>    
>>>      
>>  
>>    
>
>
>  


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

R: R: R: serialize_branches() and q value....

Mauro Davì
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=[hidden email]
Lookup("location");
Append_branch();
$ru=[hidden email]
Lookup("location");
Serialize_branches();
T_relay();

The result was:

Mar  2 17:36:53 [26014] DBG:core:serialize_branches: loaded <sip:user1@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@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@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@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@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: [hidden email] [mailto:[hidden email]] Per conto di Bogdan-Andrei Iancu
Inviato: giovedì 26 febbraio 2009 19:08
A: Mauro Davi'
Cc: [hidden email]
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@ipaddress:port)...
>
> But I cannot add, for example the following branch:
>
> Append_branch("sip:[hidden email]","0.1")
> Append_branch("sip:[hidden email]","0.2")
> Append_branch("sip:[hidden email]","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:[hidden email]";
> lookup("location");
> #Now $ru contain the resolved URI of user1
> append_branch("$ru","0.1");
> $ru="sip:[hidden email]";
> lookup("location");
> #Now $ru contain the resolved URI of user2
> append_branch("$ru","0.2");
> $ru="sip:[hidden email]";
> 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:[hidden email]]
> Inviato: mercoledì 25 febbraio 2009 15:14
> A: Mauro Davi'
> Cc: [hidden email]
> 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:[hidden email]", 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:[hidden email];q=0.1"
>>
>> Or:
>>
>> Append_branch("sip:[hidden email];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:[hidden email]]
>> Inviato: mercoledì 25 febbraio 2009 14:54
>> A: Mauro Davi'
>> Cc: [hidden email]
>> 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,
>>> [hidden email] and [hidden email] <mailto:[hidden email]>.
>>>
>>> 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:[hidden email]";
>>>
>>> }
>>>
>>> else
>>>
>>> {
>>>
>>> append_branch();
>>>
>>> $ru="sip:[hidden email]";
>>>
>>> }
>>>
>>> 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
>>> [hidden email]
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>  
>>>    
>>>      
>>  
>>    
>
>
>  


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: R: R: R: serialize_branches() and q value....

Bogdan-Andrei Iancu
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=[hidden email]
> Lookup("location");
> Append_branch();
> $ru=[hidden email]
> Lookup("location");
> Serialize_branches();
> T_relay();
>
> The result was:
>
> Mar  2 17:36:53 [26014] DBG:core:serialize_branches: loaded <sip:user1@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@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@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@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@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: [hidden email] [mailto:[hidden email]] Per conto di Bogdan-Andrei Iancu
> Inviato: giovedì 26 febbraio 2009 19:08
> A: Mauro Davi'
> Cc: [hidden email]
> 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@ipaddress:port)...
>>
>> But I cannot add, for example the following branch:
>>
>> Append_branch("sip:[hidden email]","0.1")
>> Append_branch("sip:[hidden email]","0.2")
>> Append_branch("sip:[hidden email]","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:[hidden email]";
>> lookup("location");
>> #Now $ru contain the resolved URI of user1
>> append_branch("$ru","0.1");
>> $ru="sip:[hidden email]";
>> lookup("location");
>> #Now $ru contain the resolved URI of user2
>> append_branch("$ru","0.2");
>> $ru="sip:[hidden email]";
>> 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:[hidden email]]
>> Inviato: mercoledì 25 febbraio 2009 15:14
>> A: Mauro Davi'
>> Cc: [hidden email]
>> 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:[hidden email]", 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:[hidden email];q=0.1"
>>>
>>> Or:
>>>
>>> Append_branch("sip:[hidden email];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:[hidden email]]
>>> Inviato: mercoledì 25 febbraio 2009 14:54
>>> A: Mauro Davi'
>>> Cc: [hidden email]
>>> 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,
>>>> [hidden email] and [hidden email] <mailto:[hidden email]>.
>>>>
>>>> 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:[hidden email]";
>>>>
>>>> }
>>>>
>>>> else
>>>>
>>>> {
>>>>
>>>> append_branch();
>>>>
>>>> $ru="sip:[hidden email]";
>>>>
>>>> }
>>>>
>>>> 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
>>>> [hidden email]
>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>  
>>>>    
>>>>      
>>>>        
>>>  
>>>    
>>>      
>>  
>>    
>
>
> _______________________________________________
> Users mailing list
> [hidden email]
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>  


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

R: R: R: R: serialize_branches() and q value....

Mauro Davì
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:[hidden email]]
Inviato: martedì 3 marzo 2009 18:06
A: Mauro Davi'
Cc: [hidden email]
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=[hidden email]
> Lookup("location");
> Append_branch();
> $ru=[hidden email]
> Lookup("location");
> Serialize_branches();
> T_relay();
>
> The result was:
>
> Mar  2 17:36:53 [26014] DBG:core:serialize_branches: loaded <sip:user1@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@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@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@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@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: [hidden email] [mailto:[hidden email]] Per conto di Bogdan-Andrei Iancu
> Inviato: giovedì 26 febbraio 2009 19:08
> A: Mauro Davi'
> Cc: [hidden email]
> 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@ipaddress:port)...
>>
>> But I cannot add, for example the following branch:
>>
>> Append_branch("sip:[hidden email]","0.1")
>> Append_branch("sip:[hidden email]","0.2")
>> Append_branch("sip:[hidden email]","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:[hidden email]";
>> lookup("location");
>> #Now $ru contain the resolved URI of user1
>> append_branch("$ru","0.1");
>> $ru="sip:[hidden email]";
>> lookup("location");
>> #Now $ru contain the resolved URI of user2
>> append_branch("$ru","0.2");
>> $ru="sip:[hidden email]";
>> 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:[hidden email]]
>> Inviato: mercoledì 25 febbraio 2009 15:14
>> A: Mauro Davi'
>> Cc: [hidden email]
>> 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:[hidden email]", 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:[hidden email];q=0.1"
>>>
>>> Or:
>>>
>>> Append_branch("sip:[hidden email];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:[hidden email]]
>>> Inviato: mercoledì 25 febbraio 2009 14:54
>>> A: Mauro Davi'
>>> Cc: [hidden email]
>>> 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,
>>>> [hidden email] and [hidden email] <mailto:[hidden email]>.
>>>>
>>>> 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:[hidden email]";
>>>>
>>>> }
>>>>
>>>> else
>>>>
>>>> {
>>>>
>>>> append_branch();
>>>>
>>>> $ru="sip:[hidden email]";
>>>>
>>>> }
>>>>
>>>> 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
>>>> [hidden email]
>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>  
>>>>    
>>>>      
>>>>        
>>>  
>>>    
>>>      
>>  
>>    
>
>
> _______________________________________________
> Users mailing list
> [hidden email]
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>  


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: R: R: R: R: serialize_branches() and q value....

Bogdan-Andrei Iancu
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:[hidden email]]
> Inviato: martedì 3 marzo 2009 18:06
> A: Mauro Davi'
> Cc: [hidden email]
> 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=[hidden email]
>> Lookup("location");
>> Append_branch();
>> $ru=[hidden email]
>> Lookup("location");
>> Serialize_branches();
>> T_relay();
>>
>> The result was:
>>
>> Mar  2 17:36:53 [26014] DBG:core:serialize_branches: loaded <sip:user1@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@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@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@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@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: [hidden email] [mailto:[hidden email]] Per conto di Bogdan-Andrei Iancu
>> Inviato: giovedì 26 febbraio 2009 19:08
>> A: Mauro Davi'
>> Cc: [hidden email]
>> 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@ipaddress:port)...
>>>
>>> But I cannot add, for example the following branch:
>>>
>>> Append_branch("sip:[hidden email]","0.1")
>>> Append_branch("sip:[hidden email]","0.2")
>>> Append_branch("sip:[hidden email]","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:[hidden email]";
>>> lookup("location");
>>> #Now $ru contain the resolved URI of user1
>>> append_branch("$ru","0.1");
>>> $ru="sip:[hidden email]";
>>> lookup("location");
>>> #Now $ru contain the resolved URI of user2
>>> append_branch("$ru","0.2");
>>> $ru="sip:[hidden email]";
>>> 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:[hidden email]]
>>> Inviato: mercoledì 25 febbraio 2009 15:14
>>> A: Mauro Davi'
>>> Cc: [hidden email]
>>> 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:[hidden email]", 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:[hidden email];q=0.1"
>>>>
>>>> Or:
>>>>
>>>> Append_branch("sip:[hidden email];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:[hidden email]]
>>>> Inviato: mercoledì 25 febbraio 2009 14:54
>>>> A: Mauro Davi'
>>>> Cc: [hidden email]
>>>> 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,
>>>>> [hidden email] and [hidden email] <mailto:[hidden email]>.
>>>>>
>>>>> 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:[hidden email]";
>>>>>
>>>>> }
>>>>>
>>>>> else
>>>>>
>>>>> {
>>>>>
>>>>> append_branch();
>>>>>
>>>>> $ru="sip:[hidden email]";
>>>>>
>>>>> }
>>>>>
>>>>> 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
>>>>> [hidden email]
>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>  
>>>>>    
>>>>>      
>>>>>        
>>>>>          
>>>>  
>>>>    
>>>>      
>>>>        
>>>  
>>>    
>>>      
>> _______________________________________________
>> Users mailing list
>> [hidden email]
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>  
>>    
>
>
>  


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: R: R: R: R: R: serialize_branches() and q value....

Bogdan-Andrei Iancu
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:[hidden email]]
> Inviato: martedì 3 marzo 2009 18:34
> A: Mauro Davi'
> Cc: [hidden email]
> 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:[hidden email]]
>> Inviato: martedì 3 marzo 2009 18:06
>> A: Mauro Davi'
>> Cc: [hidden email]
>> 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=[hidden email]
>>> Lookup("location");
>>> Append_branch();
>>> $ru=[hidden email]
>>> Lookup("location");
>>> Serialize_branches();
>>> T_relay();
>>>
>>> The result was:
>>>
>>> Mar  2 17:36:53 [26014] DBG:core:serialize_branches: loaded <sip:user1@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@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@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@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@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: [hidden email] [mailto:[hidden email]] Per conto di Bogdan-Andrei Iancu
>>> Inviato: giovedì 26 febbraio 2009 19:08
>>> A: Mauro Davi'
>>> Cc: [hidden email]
>>> 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@ipaddress:port)...
>>>>
>>>> But I cannot add, for example the following branch:
>>>>
>>>> Append_branch("sip:[hidden email]","0.1")
>>>> Append_branch("sip:[hidden email]","0.2")
>>>> Append_branch("sip:[hidden email]","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:[hidden email]";
>>>> lookup("location");
>>>> #Now $ru contain the resolved URI of user1
>>>> append_branch("$ru","0.1");
>>>> $ru="sip:[hidden email]";
>>>> lookup("location");
>>>> #Now $ru contain the resolved URI of user2
>>>> append_branch("$ru","0.2");
>>>> $ru="sip:[hidden email]";
>>>> 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:[hidden email]]
>>>> Inviato: mercoledì 25 febbraio 2009 15:14
>>>> A: Mauro Davi'
>>>> Cc: [hidden email]
>>>> 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:[hidden email]", 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:[hidden email];q=0.1"
>>>>>
>>>>> Or:
>>>>>
>>>>> Append_branch("sip:[hidden email];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:[hidden email]]
>>>>> Inviato: mercoledì 25 febbraio 2009 14:54
>>>>> A: Mauro Davi'
>>>>> Cc: [hidden email]
>>>>> 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,
>>>>>> [hidden email] and [hidden email] <mailto:[hidden email]>.
>>>>>>
>>>>>> 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:[hidden email]";
>>>>>>
>>>>>> }
>>>>>>
>>>>>> else
>>>>>>
>>>>>> {
>>>>>>
>>>>>> append_branch();
>>>>>>
>>>>>> $ru="sip:[hidden email]";
>>>>>>
>>>>>> }
>>>>>>
>>>>>> 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
>>>>>> [hidden email]
>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>>  
>>>>>>    
>>>>>>      
>>>>>>        
>>>>>>          
>>>>>>            
>>>>>  
>>>>>    
>>>>>      
>>>>>        
>>>>>          
>>>>  
>>>>    
>>>>      
>>>>        
>>> _______________________________________________
>>> Users mailing list
>>> [hidden email]
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>  
>>>    
>>>      
>>  
>>    
>
>
>  


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

R: R: R: R: R: R: serialize_branches() and q value....

Mauro Davì
Hi Bogdan,

yes I use usrloc module with DB MODE set to 3.

I have 4 UAC registered to the system.
After the registration procedure I modified, manually, the q value on the DB, in the location table, in the following way:

Username Domain q

User1 domain.com 0.10
User2 domain.com 0.20
User3 domain.com 0.30

The executed script code is the following:

seturi("sip:[hidden email]");
lookup("location");
append_branch();
seturi("sip:[hidden email]");
lookup("location");
append_branch()
seturi("sip:[hidden email]");
lookup("location");
serialize_branches();
t_relay();

The on_failureroute function is:

failure_route[1]{
        if ( next_branches() )
        t_relay();
}

This is the log result...

Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user2@192.168.193.61:6500;rinstance=f846856f765b6605>, q=-1 q_flag <0>
Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user1@192.168.193.60:7020;rinstance=2f7556d27898c691>, q=-1 q_flag <0>
Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user3@192.168.193.54:6638;rinstance=721b473849350f3c>, q=299 q_flag <16>

It isn't correct because user1 must have q value equal to 100 and user2 must have qvalue equal to 200... Only the last added sip uri (sip:[hidden email]) have the correct DB q value.

The result was a serialization of two call. The first one to user3, and the second one a parallal fork to user1 and user2...

Regards
        MD

P.S. there is a way to modify the qvalue associated to a sip uri or it is possible only in registration phase? Thanks.

-----Messaggio originale-----
Da: Bogdan-Andrei Iancu [mailto:[hidden email]]
Inviato: giovedì 5 marzo 2009 10:25
A: Mauro Davi'; [hidden email]
Oggetto: Re: R: R: R: [OpenSIPS-Users] R: R: serialize_branches() and q value....

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:[hidden email]]
> Inviato: martedì 3 marzo 2009 18:34
> A: Mauro Davi'
> Cc: [hidden email]
> 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:[hidden email]]
>> Inviato: martedì 3 marzo 2009 18:06
>> A: Mauro Davi'
>> Cc: [hidden email]
>> 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=[hidden email]
>>> Lookup("location");
>>> Append_branch();
>>> $ru=[hidden email]
>>> Lookup("location");
>>> Serialize_branches();
>>> T_relay();
>>>
>>> The result was:
>>>
>>> Mar  2 17:36:53 [26014] DBG:core:serialize_branches: loaded <sip:user1@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@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@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@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@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: [hidden email] [mailto:[hidden email]] Per conto di Bogdan-Andrei Iancu
>>> Inviato: giovedì 26 febbraio 2009 19:08
>>> A: Mauro Davi'
>>> Cc: [hidden email]
>>> 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@ipaddress:port)...
>>>>
>>>> But I cannot add, for example the following branch:
>>>>
>>>> Append_branch("sip:[hidden email]","0.1")
>>>> Append_branch("sip:[hidden email]","0.2")
>>>> Append_branch("sip:[hidden email]","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:[hidden email]";
>>>> lookup("location");
>>>> #Now $ru contain the resolved URI of user1
>>>> append_branch("$ru","0.1");
>>>> $ru="sip:[hidden email]";
>>>> lookup("location");
>>>> #Now $ru contain the resolved URI of user2
>>>> append_branch("$ru","0.2");
>>>> $ru="sip:[hidden email]";
>>>> 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:[hidden email]]
>>>> Inviato: mercoledì 25 febbraio 2009 15:14
>>>> A: Mauro Davi'
>>>> Cc: [hidden email]
>>>> 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:[hidden email]", 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:[hidden email];q=0.1"
>>>>>
>>>>> Or:
>>>>>
>>>>> Append_branch("sip:[hidden email];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:[hidden email]]
>>>>> Inviato: mercoledì 25 febbraio 2009 14:54
>>>>> A: Mauro Davi'
>>>>> Cc: [hidden email]
>>>>> 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,
>>>>>> [hidden email] and [hidden email] <mailto:[hidden email]>.
>>>>>>
>>>>>> 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:[hidden email]";
>>>>>>
>>>>>> }
>>>>>>
>>>>>> else
>>>>>>
>>>>>> {
>>>>>>
>>>>>> append_branch();
>>>>>>
>>>>>> $ru="sip:[hidden email]";
>>>>>>
>>>>>> }
>>>>>>
>>>>>> 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
>>>>>> [hidden email]
>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>>  
>>>>>>    
>>>>>>      
>>>>>>        
>>>>>>          
>>>>>>            
>>>>>  
>>>>>    
>>>>>      
>>>>>        
>>>>>          
>>>>  
>>>>    
>>>>      
>>>>        
>>> _______________________________________________
>>> Users mailing list
>>> [hidden email]
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>  
>>>    
>>>      
>>  
>>    
>
>
>  


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: R: R: R: R: R: R: serialize_branches() and q value....

Bogdan-Andrei Iancu
Hi Mauro,

indeed there is a issue here. The Q value for the default branch (the
RURI) was not properly pushed into the branches.....I made a fix on SVN
- could you please update and give it another try?

Thanks and regards,
Bogdan

Mauro Davi' wrote:

> Hi Bogdan,
>
> yes I use usrloc module with DB MODE set to 3.
>
> I have 4 UAC registered to the system.
> After the registration procedure I modified, manually, the q value on the DB, in the location table, in the following way:
>
> Username Domain q
>
> User1 domain.com 0.10
> User2 domain.com 0.20
> User3 domain.com 0.30
>
> The executed script code is the following:
>
> seturi("sip:[hidden email]");
> lookup("location");
> append_branch();
> seturi("sip:[hidden email]");
> lookup("location");
> append_branch()
> seturi("sip:[hidden email]");
> lookup("location");
> serialize_branches();
> t_relay();
>
> The on_failureroute function is:
>
> failure_route[1]{
> if ( next_branches() )
> t_relay();
> }
>
> This is the log result...
>
> Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user2@192.168.193.61:6500;rinstance=f846856f765b6605>, q=-1 q_flag <0>
> Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user1@192.168.193.60:7020;rinstance=2f7556d27898c691>, q=-1 q_flag <0>
> Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user3@192.168.193.54:6638;rinstance=721b473849350f3c>, q=299 q_flag <16>
>
> It isn't correct because user1 must have q value equal to 100 and user2 must have qvalue equal to 200... Only the last added sip uri (sip:[hidden email]) have the correct DB q value.
>
> The result was a serialization of two call. The first one to user3, and the second one a parallal fork to user1 and user2...
>
> Regards
> MD
>
> P.S. there is a way to modify the qvalue associated to a sip uri or it is possible only in registration phase? Thanks.
>
> -----Messaggio originale-----
> Da: Bogdan-Andrei Iancu [mailto:[hidden email]]
> Inviato: giovedì 5 marzo 2009 10:25
> A: Mauro Davi'; [hidden email]
> Oggetto: Re: R: R: R: [OpenSIPS-Users] R: R: serialize_branches() and q value....
>
> 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:[hidden email]]
>> Inviato: martedì 3 marzo 2009 18:34
>> A: Mauro Davi'
>> Cc: [hidden email]
>> 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:[hidden email]]
>>> Inviato: martedì 3 marzo 2009 18:06
>>> A: Mauro Davi'
>>> Cc: [hidden email]
>>> 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=[hidden email]
>>>> Lookup("location");
>>>> Append_branch();
>>>> $ru=[hidden email]
>>>> Lookup("location");
>>>> Serialize_branches();
>>>> T_relay();
>>>>
>>>> The result was:
>>>>
>>>> Mar  2 17:36:53 [26014] DBG:core:serialize_branches: loaded <sip:user1@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@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@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@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@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: [hidden email] [mailto:[hidden email]] Per conto di Bogdan-Andrei Iancu
>>>> Inviato: giovedì 26 febbraio 2009 19:08
>>>> A: Mauro Davi'
>>>> Cc: [hidden email]
>>>> 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@ipaddress:port)...
>>>>>
>>>>> But I cannot add, for example the following branch:
>>>>>
>>>>> Append_branch("sip:[hidden email]","0.1")
>>>>> Append_branch("sip:[hidden email]","0.2")
>>>>> Append_branch("sip:[hidden email]","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:[hidden email]";
>>>>> lookup("location");
>>>>> #Now $ru contain the resolved URI of user1
>>>>> append_branch("$ru","0.1");
>>>>> $ru="sip:[hidden email]";
>>>>> lookup("location");
>>>>> #Now $ru contain the resolved URI of user2
>>>>> append_branch("$ru","0.2");
>>>>> $ru="sip:[hidden email]";
>>>>> 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:[hidden email]]
>>>>> Inviato: mercoledì 25 febbraio 2009 15:14
>>>>> A: Mauro Davi'
>>>>> Cc: [hidden email]
>>>>> 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:[hidden email]", 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:[hidden email];q=0.1"
>>>>>>
>>>>>> Or:
>>>>>>
>>>>>> Append_branch("sip:[hidden email];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:[hidden email]]
>>>>>> Inviato: mercoledì 25 febbraio 2009 14:54
>>>>>> A: Mauro Davi'
>>>>>> Cc: [hidden email]
>>>>>> 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,
>>>>>>> [hidden email] and [hidden email] <mailto:[hidden email]>.
>>>>>>>
>>>>>>> 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:[hidden email]";
>>>>>>>
>>>>>>> }
>>>>>>>
>>>>>>> else
>>>>>>>
>>>>>>> {
>>>>>>>
>>>>>>> append_branch();
>>>>>>>
>>>>>>> $ru="sip:[hidden email]";
>>>>>>>
>>>>>>> }
>>>>>>>
>>>>>>> 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
>>>>>>> [hidden email]
>>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>>>  
>>>>>>>    
>>>>>>>      
>>>>>>>        
>>>>>>>          
>>>>>>>            
>>>>>>>              
>>>>>>  
>>>>>>    
>>>>>>      
>>>>>>        
>>>>>>          
>>>>>>            
>>>>>  
>>>>>    
>>>>>      
>>>>>        
>>>>>          
>>>> _______________________________________________
>>>> Users mailing list
>>>> [hidden email]
>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>
>>>>  
>>>>    
>>>>      
>>>>        
>>>  
>>>    
>>>      
>>  
>>    
>
>
>  


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

R: R: R: R: R: R: R: serialize_branches() and q value....

Mauro Davì
Now I try to update the source code.

Thank you very much!!!!

     MD

-----Messaggio originale-----
Da: Bogdan-Andrei Iancu [mailto:[hidden email]]
Inviato: lunedì 9 marzo 2009 13:40
A: Mauro Davi'
Cc: [hidden email]
Oggetto: Re: R: R: R: R: [OpenSIPS-Users] R: R: serialize_branches() and q value....

Hi Mauro,

indeed there is a issue here. The Q value for the default branch (the
RURI) was not properly pushed into the branches.....I made a fix on SVN
- could you please update and give it another try?

Thanks and regards,
Bogdan

Mauro Davi' wrote:

> Hi Bogdan,
>
> yes I use usrloc module with DB MODE set to 3.
>
> I have 4 UAC registered to the system.
> After the registration procedure I modified, manually, the q value on the DB, in the location table, in the following way:
>
> Username Domain q
>
> User1 domain.com 0.10
> User2 domain.com 0.20
> User3 domain.com 0.30
>
> The executed script code is the following:
>
> seturi("sip:[hidden email]");
> lookup("location");
> append_branch();
> seturi("sip:[hidden email]");
> lookup("location");
> append_branch()
> seturi("sip:[hidden email]");
> lookup("location");
> serialize_branches();
> t_relay();
>
> The on_failureroute function is:
>
> failure_route[1]{
> if ( next_branches() )
> t_relay();
> }
>
> This is the log result...
>
> Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user2@192.168.193.61:6500;rinstance=f846856f765b6605>, q=-1 q_flag <0>
> Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user1@192.168.193.60:7020;rinstance=2f7556d27898c691>, q=-1 q_flag <0>
> Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user3@192.168.193.54:6638;rinstance=721b473849350f3c>, q=299 q_flag <16>
>
> It isn't correct because user1 must have q value equal to 100 and user2 must have qvalue equal to 200... Only the last added sip uri (sip:[hidden email]) have the correct DB q value.
>
> The result was a serialization of two call. The first one to user3, and the second one a parallal fork to user1 and user2...
>
> Regards
> MD
>
> P.S. there is a way to modify the qvalue associated to a sip uri or it is possible only in registration phase? Thanks.
>
> -----Messaggio originale-----
> Da: Bogdan-Andrei Iancu [mailto:[hidden email]]
> Inviato: giovedì 5 marzo 2009 10:25
> A: Mauro Davi'; [hidden email]
> Oggetto: Re: R: R: R: [OpenSIPS-Users] R: R: serialize_branches() and q value....
>
> 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:[hidden email]]
>> Inviato: martedì 3 marzo 2009 18:34
>> A: Mauro Davi'
>> Cc: [hidden email]
>> 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:[hidden email]]
>>> Inviato: martedì 3 marzo 2009 18:06
>>> A: Mauro Davi'
>>> Cc: [hidden email]
>>> 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=[hidden email]
>>>> Lookup("location");
>>>> Append_branch();
>>>> $ru=[hidden email]
>>>> Lookup("location");
>>>> Serialize_branches();
>>>> T_relay();
>>>>
>>>> The result was:
>>>>
>>>> Mar  2 17:36:53 [26014] DBG:core:serialize_branches: loaded <sip:user1@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@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@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@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@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: [hidden email] [mailto:[hidden email]] Per conto di Bogdan-Andrei Iancu
>>>> Inviato: giovedì 26 febbraio 2009 19:08
>>>> A: Mauro Davi'
>>>> Cc: [hidden email]
>>>> 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@ipaddress:port)...
>>>>>
>>>>> But I cannot add, for example the following branch:
>>>>>
>>>>> Append_branch("sip:[hidden email]","0.1")
>>>>> Append_branch("sip:[hidden email]","0.2")
>>>>> Append_branch("sip:[hidden email]","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:[hidden email]";
>>>>> lookup("location");
>>>>> #Now $ru contain the resolved URI of user1
>>>>> append_branch("$ru","0.1");
>>>>> $ru="sip:[hidden email]";
>>>>> lookup("location");
>>>>> #Now $ru contain the resolved URI of user2
>>>>> append_branch("$ru","0.2");
>>>>> $ru="sip:[hidden email]";
>>>>> 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:[hidden email]]
>>>>> Inviato: mercoledì 25 febbraio 2009 15:14
>>>>> A: Mauro Davi'
>>>>> Cc: [hidden email]
>>>>> 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:[hidden email]", 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:[hidden email];q=0.1"
>>>>>>
>>>>>> Or:
>>>>>>
>>>>>> Append_branch("sip:[hidden email];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:[hidden email]]
>>>>>> Inviato: mercoledì 25 febbraio 2009 14:54
>>>>>> A: Mauro Davi'
>>>>>> Cc: [hidden email]
>>>>>> 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,
>>>>>>> [hidden email] and [hidden email] <mailto:[hidden email]>.
>>>>>>>
>>>>>>> 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:[hidden email]";
>>>>>>>
>>>>>>> }
>>>>>>>
>>>>>>> else
>>>>>>>
>>>>>>> {
>>>>>>>
>>>>>>> append_branch();
>>>>>>>
>>>>>>> $ru="sip:[hidden email]";
>>>>>>>
>>>>>>> }
>>>>>>>
>>>>>>> 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
>>>>>>> [hidden email]
>>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>>>  
>>>>>>>    
>>>>>>>      
>>>>>>>        
>>>>>>>          
>>>>>>>            
>>>>>>>              
>>>>>>  
>>>>>>    
>>>>>>      
>>>>>>        
>>>>>>          
>>>>>>            
>>>>>  
>>>>>    
>>>>>      
>>>>>        
>>>>>          
>>>> _______________________________________________
>>>> Users mailing list
>>>> [hidden email]
>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>
>>>>  
>>>>    
>>>>      
>>>>        
>>>  
>>>    
>>>      
>>  
>>    
>
>
>  


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

R: R: R: R: R: R: R: serialize_branches() and q value....

Mauro Davì
In reply to this post by Bogdan-Andrei Iancu
Hi Bogdan,

I update the source code from the svn and I do the test.

The qvalue are now loaded correctly from the database, how you can see below:

Mar 10 15:17:07 [8789] DBG:core:serialize_branches: loaded <sip:user1@192.168.193.54:33680;rinstance=323bd97f8a0dae2e<99><99><99>ÃÃÃÃíïë>, q=100 q_fl<0>
Mar 10 15:17:07 [8789] DBG:core:serialize_branches: loaded <sip:user3@192.168.193.60:6651;rinstance=312f0937682fe662>, q=299 q_flag <16>
Mar 10 15:17:07 [8789] DBG:core:serialize_branches: loaded <sip:user2@192.168.193.61:6328;rinstance=88793931d487ca32>, q=200 q_flag <0>

But when in the failure_route I call the next_branches() function the result is:

Mar 10 15:17:16 [8795] DBG:core:next_branches: branch is <sip:user2@192.168.193.61:6328;rinstance=88793931d487ca32>
params(0xb5f83000, 0xb6198524), called from usr_avp.c: destroy_avp(352)
freeing frag. 0xb619850c alloc'ed from usr_avp.c: add_avp(116)
Mar 10 15:17:16 [8795] DBG:core:next_branches: branch is <sip:user3@192.168.193.60:6651;rinstance=312f0937682fe662>
params(0xb5f83000, 0xb61984a8), called from usr_avp.c: destroy_avp(352)
freeing frag. 0xb6198490 alloc'ed from usr_avp.c: add_avp(116)

i.e. the second call is a parallel fork with user2 and user 3... and not a serialized call to user2...

I think that the bug is present yet.... But now the problem is in the next_branches function where the qvalue aren't correctly stored...

Best regards
    MD

-----Messaggio originale-----
Da: Bogdan-Andrei Iancu [mailto:[hidden email]]
Inviato: lunedì 9 marzo 2009 13:40
A: Mauro Davi'
Cc: [hidden email]
Oggetto: Re: R: R: R: R: [OpenSIPS-Users] R: R: serialize_branches() and q value....

Hi Mauro,

indeed there is a issue here. The Q value for the default branch (the
RURI) was not properly pushed into the branches.....I made a fix on SVN
- could you please update and give it another try?

Thanks and regards,
Bogdan

Mauro Davi' wrote:

> Hi Bogdan,
>
> yes I use usrloc module with DB MODE set to 3.
>
> I have 4 UAC registered to the system.
> After the registration procedure I modified, manually, the q value on the DB, in the location table, in the following way:
>
> Username Domain q
>
> User1 domain.com 0.10
> User2 domain.com 0.20
> User3 domain.com 0.30
>
> The executed script code is the following:
>
> seturi("sip:[hidden email]");
> lookup("location");
> append_branch();
> seturi("sip:[hidden email]");
> lookup("location");
> append_branch()
> seturi("sip:[hidden email]");
> lookup("location");
> serialize_branches();
> t_relay();
>
> The on_failureroute function is:
>
> failure_route[1]{
> if ( next_branches() )
> t_relay();
> }
>
> This is the log result...
>
> Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user2@192.168.193.61:6500;rinstance=f846856f765b6605>, q=-1 q_flag <0>
> Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user1@192.168.193.60:7020;rinstance=2f7556d27898c691>, q=-1 q_flag <0>
> Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user3@192.168.193.54:6638;rinstance=721b473849350f3c>, q=299 q_flag <16>
>
> It isn't correct because user1 must have q value equal to 100 and user2 must have qvalue equal to 200... Only the last added sip uri (sip:[hidden email]) have the correct DB q value.
>
> The result was a serialization of two call. The first one to user3, and the second one a parallal fork to user1 and user2...
>
> Regards
> MD
>
> P.S. there is a way to modify the qvalue associated to a sip uri or it is possible only in registration phase? Thanks.
>
> -----Messaggio originale-----
> Da: Bogdan-Andrei Iancu [mailto:[hidden email]]
> Inviato: giovedì 5 marzo 2009 10:25
> A: Mauro Davi'; [hidden email]
> Oggetto: Re: R: R: R: [OpenSIPS-Users] R: R: serialize_branches() and q value....
>
> 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:[hidden email]]
>> Inviato: martedì 3 marzo 2009 18:34
>> A: Mauro Davi'
>> Cc: [hidden email]
>> 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:[hidden email]]
>>> Inviato: martedì 3 marzo 2009 18:06
>>> A: Mauro Davi'
>>> Cc: [hidden email]
>>> 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=[hidden email]
>>>> Lookup("location");
>>>> Append_branch();
>>>> $ru=[hidden email]
>>>> Lookup("location");
>>>> Serialize_branches();
>>>> T_relay();
>>>>
>>>> The result was:
>>>>
>>>> Mar  2 17:36:53 [26014] DBG:core:serialize_branches: loaded <sip:user1@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@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@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@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@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: [hidden email] [mailto:[hidden email]] Per conto di Bogdan-Andrei Iancu
>>>> Inviato: giovedì 26 febbraio 2009 19:08
>>>> A: Mauro Davi'
>>>> Cc: [hidden email]
>>>> 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@ipaddress:port)...
>>>>>
>>>>> But I cannot add, for example the following branch:
>>>>>
>>>>> Append_branch("sip:[hidden email]","0.1")
>>>>> Append_branch("sip:[hidden email]","0.2")
>>>>> Append_branch("sip:[hidden email]","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:[hidden email]";
>>>>> lookup("location");
>>>>> #Now $ru contain the resolved URI of user1
>>>>> append_branch("$ru","0.1");
>>>>> $ru="sip:[hidden email]";
>>>>> lookup("location");
>>>>> #Now $ru contain the resolved URI of user2
>>>>> append_branch("$ru","0.2");
>>>>> $ru="sip:[hidden email]";
>>>>> 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:[hidden email]]
>>>>> Inviato: mercoledì 25 febbraio 2009 15:14
>>>>> A: Mauro Davi'
>>>>> Cc: [hidden email]
>>>>> 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:[hidden email]", 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:[hidden email];q=0.1"
>>>>>>
>>>>>> Or:
>>>>>>
>>>>>> Append_branch("sip:[hidden email];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:[hidden email]]
>>>>>> Inviato: mercoledì 25 febbraio 2009 14:54
>>>>>> A: Mauro Davi'
>>>>>> Cc: [hidden email]
>>>>>> 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,
>>>>>>> [hidden email] and [hidden email] <mailto:[hidden email]>.
>>>>>>>
>>>>>>> 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:[hidden email]";
>>>>>>>
>>>>>>> }
>>>>>>>
>>>>>>> else
>>>>>>>
>>>>>>> {
>>>>>>>
>>>>>>> append_branch();
>>>>>>>
>>>>>>> $ru="sip:[hidden email]";
>>>>>>>
>>>>>>> }
>>>>>>>
>>>>>>> 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
>>>>>>> [hidden email]
>>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>>>  
>>>>>>>    
>>>>>>>      
>>>>>>>        
>>>>>>>          
>>>>>>>            
>>>>>>>              
>>>>>>  
>>>>>>    
>>>>>>      
>>>>>>        
>>>>>>          
>>>>>>            
>>>>>  
>>>>>    
>>>>>      
>>>>>        
>>>>>          
>>>> _______________________________________________
>>>> Users mailing list
>>>> [hidden email]
>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>
>>>>  
>>>>    
>>>>      
>>>>        
>>>  
>>>    
>>>      
>>  
>>    
>
>
>  


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: R: R: R: R: R: R: R: serialize_branches() and q value....

Bogdan-Andrei Iancu
Hi Mauro,

There are some fishy things here.

1) the Q for user3 is 300 (as per DB example) and not 299 (as per logs)

2) the branches (in log) are not q ordered.

3) the flags don't seam to be correctly set.

I made on 1.5 a fix (related to (2)) - could you please update and re-test.

Regards,
Bogdan


Mauro Davi' wrote:

> Hi Bogdan,
>
> I update the source code from the svn and I do the test.
>
> The qvalue are now loaded correctly from the database, how you can see below:
>
> Mar 10 15:17:07 [8789] DBG:core:serialize_branches: loaded <sip:user1@192.168.193.54:33680;rinstance=323bd97f8a0dae2e<99><99><99>ÃÃÃÃíïë>, q=100 q_fl<0>
> Mar 10 15:17:07 [8789] DBG:core:serialize_branches: loaded <sip:user3@192.168.193.60:6651;rinstance=312f0937682fe662>, q=299 q_flag <16>
> Mar 10 15:17:07 [8789] DBG:core:serialize_branches: loaded <sip:user2@192.168.193.61:6328;rinstance=88793931d487ca32>, q=200 q_flag <0>
>
> But when in the failure_route I call the next_branches() function the result is:
>
> Mar 10 15:17:16 [8795] DBG:core:next_branches: branch is <sip:user2@192.168.193.61:6328;rinstance=88793931d487ca32>
> params(0xb5f83000, 0xb6198524), called from usr_avp.c: destroy_avp(352)
> freeing frag. 0xb619850c alloc'ed from usr_avp.c: add_avp(116)
> Mar 10 15:17:16 [8795] DBG:core:next_branches: branch is <sip:user3@192.168.193.60:6651;rinstance=312f0937682fe662>
> params(0xb5f83000, 0xb61984a8), called from usr_avp.c: destroy_avp(352)
> freeing frag. 0xb6198490 alloc'ed from usr_avp.c: add_avp(116)
>
> i.e. the second call is a parallel fork with user2 and user 3... and not a serialized call to user2...
>
> I think that the bug is present yet.... But now the problem is in the next_branches function where the qvalue aren't correctly stored...
>
> Best regards
>     MD
>
> -----Messaggio originale-----
> Da: Bogdan-Andrei Iancu [mailto:[hidden email]]
> Inviato: lunedì 9 marzo 2009 13:40
> A: Mauro Davi'
> Cc: [hidden email]
> Oggetto: Re: R: R: R: R: [OpenSIPS-Users] R: R: serialize_branches() and q value....
>
> Hi Mauro,
>
> indeed there is a issue here. The Q value for the default branch (the
> RURI) was not properly pushed into the branches.....I made a fix on SVN
> - could you please update and give it another try?
>
> Thanks and regards,
> Bogdan
>
> Mauro Davi' wrote:
>  
>> Hi Bogdan,
>>
>> yes I use usrloc module with DB MODE set to 3.
>>
>> I have 4 UAC registered to the system.
>> After the registration procedure I modified, manually, the q value on the DB, in the location table, in the following way:
>>
>> Username Domain q
>>
>> User1 domain.com 0.10
>> User2 domain.com 0.20
>> User3 domain.com 0.30
>>
>> The executed script code is the following:
>>
>> seturi("sip:[hidden email]");
>> lookup("location");
>> append_branch();
>> seturi("sip:[hidden email]");
>> lookup("location");
>> append_branch()
>> seturi("sip:[hidden email]");
>> lookup("location");
>> serialize_branches();
>> t_relay();
>>
>> The on_failureroute function is:
>>
>> failure_route[1]{
>> if ( next_branches() )
>> t_relay();
>> }
>>
>> This is the log result...
>>
>> Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user2@192.168.193.61:6500;rinstance=f846856f765b6605>, q=-1 q_flag <0>
>> Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user1@192.168.193.60:7020;rinstance=2f7556d27898c691>, q=-1 q_flag <0>
>> Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user3@192.168.193.54:6638;rinstance=721b473849350f3c>, q=299 q_flag <16>
>>
>> It isn't correct because user1 must have q value equal to 100 and user2 must have qvalue equal to 200... Only the last added sip uri (sip:[hidden email]) have the correct DB q value.
>>
>> The result was a serialization of two call. The first one to user3, and the second one a parallal fork to user1 and user2...
>>
>> Regards
>> MD
>>
>> P.S. there is a way to modify the qvalue associated to a sip uri or it is possible only in registration phase? Thanks.
>>
>> -----Messaggio originale-----
>> Da: Bogdan-Andrei Iancu [mailto:[hidden email]]
>> Inviato: giovedì 5 marzo 2009 10:25
>> A: Mauro Davi'; [hidden email]
>> Oggetto: Re: R: R: R: [OpenSIPS-Users] R: R: serialize_branches() and q value....
>>
>> 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:[hidden email]]
>>> Inviato: martedì 3 marzo 2009 18:34
>>> A: Mauro Davi'
>>> Cc: [hidden email]
>>> 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:[hidden email]]
>>>> Inviato: martedì 3 marzo 2009 18:06
>>>> A: Mauro Davi'
>>>> Cc: [hidden email]
>>>> 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=[hidden email]
>>>>> Lookup("location");
>>>>> Append_branch();
>>>>> $ru=[hidden email]
>>>>> Lookup("location");
>>>>> Serialize_branches();
>>>>> T_relay();
>>>>>
>>>>> The result was:
>>>>>
>>>>> Mar  2 17:36:53 [26014] DBG:core:serialize_branches: loaded <sip:user1@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@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@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@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@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: [hidden email] [mailto:[hidden email]] Per conto di Bogdan-Andrei Iancu
>>>>> Inviato: giovedì 26 febbraio 2009 19:08
>>>>> A: Mauro Davi'
>>>>> Cc: [hidden email]
>>>>> 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@ipaddress:port)...
>>>>>>
>>>>>> But I cannot add, for example the following branch:
>>>>>>
>>>>>> Append_branch("sip:[hidden email]","0.1")
>>>>>> Append_branch("sip:[hidden email]","0.2")
>>>>>> Append_branch("sip:[hidden email]","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:[hidden email]";
>>>>>> lookup("location");
>>>>>> #Now $ru contain the resolved URI of user1
>>>>>> append_branch("$ru","0.1");
>>>>>> $ru="sip:[hidden email]";
>>>>>> lookup("location");
>>>>>> #Now $ru contain the resolved URI of user2
>>>>>> append_branch("$ru","0.2");
>>>>>> $ru="sip:[hidden email]";
>>>>>> 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:[hidden email]]
>>>>>> Inviato: mercoledì 25 febbraio 2009 15:14
>>>>>> A: Mauro Davi'
>>>>>> Cc: [hidden email]
>>>>>> 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:[hidden email]", 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:[hidden email];q=0.1"
>>>>>>>
>>>>>>> Or:
>>>>>>>
>>>>>>> Append_branch("sip:[hidden email];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:[hidden email]]
>>>>>>> Inviato: mercoledì 25 febbraio 2009 14:54
>>>>>>> A: Mauro Davi'
>>>>>>> Cc: [hidden email]
>>>>>>> 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,
>>>>>>>> [hidden email] and [hidden email] <mailto:[hidden email]>.
>>>>>>>>
>>>>>>>> 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:[hidden email]";
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>> else
>>>>>>>>
>>>>>>>> {
>>>>>>>>
>>>>>>>> append_branch();
>>>>>>>>
>>>>>>>> $ru="sip:[hidden email]";
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>> 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
>>>>>>>> [hidden email]
>>>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>>>>  
>>>>>>>>    
>>>>>>>>      
>>>>>>>>        
>>>>>>>>          
>>>>>>>>            
>>>>>>>>              
>>>>>>>>                
>>>>>>>  
>>>>>>>    
>>>>>>>      
>>>>>>>        
>>>>>>>          
>>>>>>>            
>>>>>>>              
>>>>>>  
>>>>>>    
>>>>>>      
>>>>>>        
>>>>>>          
>>>>>>            
>>>>> _______________________________________________
>>>>> Users mailing list
>>>>> [hidden email]
>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>
>>>>>  
>>>>>    
>>>>>      
>>>>>        
>>>>>          
>>>>  
>>>>    
>>>>      
>>>>        
>>>  
>>>    
>>>      
>>  
>>    
>
>
>  


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

R: R: R: R: R: R: R: R: serialize_branches() and q value....

Mauro Davì
Hi Bogdan

Well done!!! Now it works fine!!!

Thank You
    MD

-----Messaggio originale-----
Da: Bogdan-Andrei Iancu [mailto:[hidden email]]
Inviato: martedì 10 marzo 2009 21:42
A: Mauro Davi'
Cc: [hidden email]
Oggetto: Re: R: R: R: R: R: [OpenSIPS-Users] R: R: serialize_branches() and q value....

Hi Mauro,

There are some fishy things here.

1) the Q for user3 is 300 (as per DB example) and not 299 (as per logs)

2) the branches (in log) are not q ordered.

3) the flags don't seam to be correctly set.

I made on 1.5 a fix (related to (2)) - could you please update and re-test.

Regards,
Bogdan


Mauro Davi' wrote:

> Hi Bogdan,
>
> I update the source code from the svn and I do the test.
>
> The qvalue are now loaded correctly from the database, how you can see below:
>
> Mar 10 15:17:07 [8789] DBG:core:serialize_branches: loaded <sip:user1@192.168.193.54:33680;rinstance=323bd97f8a0dae2e<99><99><99>ÃÃÃÃíïë>, q=100 q_fl<0>
> Mar 10 15:17:07 [8789] DBG:core:serialize_branches: loaded <sip:user3@192.168.193.60:6651;rinstance=312f0937682fe662>, q=299 q_flag <16>
> Mar 10 15:17:07 [8789] DBG:core:serialize_branches: loaded <sip:user2@192.168.193.61:6328;rinstance=88793931d487ca32>, q=200 q_flag <0>
>
> But when in the failure_route I call the next_branches() function the result is:
>
> Mar 10 15:17:16 [8795] DBG:core:next_branches: branch is <sip:user2@192.168.193.61:6328;rinstance=88793931d487ca32>
> params(0xb5f83000, 0xb6198524), called from usr_avp.c: destroy_avp(352)
> freeing frag. 0xb619850c alloc'ed from usr_avp.c: add_avp(116)
> Mar 10 15:17:16 [8795] DBG:core:next_branches: branch is <sip:user3@192.168.193.60:6651;rinstance=312f0937682fe662>
> params(0xb5f83000, 0xb61984a8), called from usr_avp.c: destroy_avp(352)
> freeing frag. 0xb6198490 alloc'ed from usr_avp.c: add_avp(116)
>
> i.e. the second call is a parallel fork with user2 and user 3... and not a serialized call to user2...
>
> I think that the bug is present yet.... But now the problem is in the next_branches function where the qvalue aren't correctly stored...
>
> Best regards
>     MD
>
> -----Messaggio originale-----
> Da: Bogdan-Andrei Iancu [mailto:[hidden email]]
> Inviato: lunedì 9 marzo 2009 13:40
> A: Mauro Davi'
> Cc: [hidden email]
> Oggetto: Re: R: R: R: R: [OpenSIPS-Users] R: R: serialize_branches() and q value....
>
> Hi Mauro,
>
> indeed there is a issue here. The Q value for the default branch (the
> RURI) was not properly pushed into the branches.....I made a fix on SVN
> - could you please update and give it another try?
>
> Thanks and regards,
> Bogdan
>
> Mauro Davi' wrote:
>  
>> Hi Bogdan,
>>
>> yes I use usrloc module with DB MODE set to 3.
>>
>> I have 4 UAC registered to the system.
>> After the registration procedure I modified, manually, the q value on the DB, in the location table, in the following way:
>>
>> Username Domain q
>>
>> User1 domain.com 0.10
>> User2 domain.com 0.20
>> User3 domain.com 0.30
>>
>> The executed script code is the following:
>>
>> seturi("sip:[hidden email]");
>> lookup("location");
>> append_branch();
>> seturi("sip:[hidden email]");
>> lookup("location");
>> append_branch()
>> seturi("sip:[hidden email]");
>> lookup("location");
>> serialize_branches();
>> t_relay();
>>
>> The on_failureroute function is:
>>
>> failure_route[1]{
>> if ( next_branches() )
>> t_relay();
>> }
>>
>> This is the log result...
>>
>> Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user2@192.168.193.61:6500;rinstance=f846856f765b6605>, q=-1 q_flag <0>
>> Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user1@192.168.193.60:7020;rinstance=2f7556d27898c691>, q=-1 q_flag <0>
>> Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user3@192.168.193.54:6638;rinstance=721b473849350f3c>, q=299 q_flag <16>
>>
>> It isn't correct because user1 must have q value equal to 100 and user2 must have qvalue equal to 200... Only the last added sip uri (sip:[hidden email]) have the correct DB q value.
>>
>> The result was a serialization of two call. The first one to user3, and the second one a parallal fork to user1 and user2...
>>
>> Regards
>> MD
>>
>> P.S. there is a way to modify the qvalue associated to a sip uri or it is possible only in registration phase? Thanks.
>>
>> -----Messaggio originale-----
>> Da: Bogdan-Andrei Iancu [mailto:[hidden email]]
>> Inviato: giovedì 5 marzo 2009 10:25
>> A: Mauro Davi'; [hidden email]
>> Oggetto: Re: R: R: R: [OpenSIPS-Users] R: R: serialize_branches() and q value....
>>
>> 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:[hidden email]]
>>> Inviato: martedì 3 marzo 2009 18:34
>>> A: Mauro Davi'
>>> Cc: [hidden email]
>>> 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:[hidden email]]
>>>> Inviato: martedì 3 marzo 2009 18:06
>>>> A: Mauro Davi'
>>>> Cc: [hidden email]
>>>> 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=[hidden email]
>>>>> Lookup("location");
>>>>> Append_branch();
>>>>> $ru=[hidden email]
>>>>> Lookup("location");
>>>>> Serialize_branches();
>>>>> T_relay();
>>>>>
>>>>> The result was:
>>>>>
>>>>> Mar  2 17:36:53 [26014] DBG:core:serialize_branches: loaded <sip:user1@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@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@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@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@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: [hidden email] [mailto:[hidden email]] Per conto di Bogdan-Andrei Iancu
>>>>> Inviato: giovedì 26 febbraio 2009 19:08
>>>>> A: Mauro Davi'
>>>>> Cc: [hidden email]
>>>>> 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@ipaddress:port)...
>>>>>>
>>>>>> But I cannot add, for example the following branch:
>>>>>>
>>>>>> Append_branch("sip:[hidden email]","0.1")
>>>>>> Append_branch("sip:[hidden email]","0.2")
>>>>>> Append_branch("sip:[hidden email]","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:[hidden email]";
>>>>>> lookup("location");
>>>>>> #Now $ru contain the resolved URI of user1
>>>>>> append_branch("$ru","0.1");
>>>>>> $ru="sip:[hidden email]";
>>>>>> lookup("location");
>>>>>> #Now $ru contain the resolved URI of user2
>>>>>> append_branch("$ru","0.2");
>>>>>> $ru="sip:[hidden email]";
>>>>>> 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:[hidden email]]
>>>>>> Inviato: mercoledì 25 febbraio 2009 15:14
>>>>>> A: Mauro Davi'
>>>>>> Cc: [hidden email]
>>>>>> 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:[hidden email]", 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:[hidden email];q=0.1"
>>>>>>>
>>>>>>> Or:
>>>>>>>
>>>>>>> Append_branch("sip:[hidden email];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:[hidden email]]
>>>>>>> Inviato: mercoledì 25 febbraio 2009 14:54
>>>>>>> A: Mauro Davi'
>>>>>>> Cc: [hidden email]
>>>>>>> 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,
>>>>>>>> [hidden email] and [hidden email] <mailto:[hidden email]>.
>>>>>>>>
>>>>>>>> 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:[hidden email]";
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>> else
>>>>>>>>
>>>>>>>> {
>>>>>>>>
>>>>>>>> append_branch();
>>>>>>>>
>>>>>>>> $ru="sip:[hidden email]";
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>> 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
>>>>>>>> [hidden email]
>>>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>>>>  
>>>>>>>>    
>>>>>>>>      
>>>>>>>>        
>>>>>>>>          
>>>>>>>>            
>>>>>>>>              
>>>>>>>>                
>>>>>>>  
>>>>>>>    
>>>>>>>      
>>>>>>>        
>>>>>>>          
>>>>>>>            
>>>>>>>              
>>>>>>  
>>>>>>    
>>>>>>      
>>>>>>        
>>>>>>          
>>>>>>            
>>>>> _______________________________________________
>>>>> Users mailing list
>>>>> [hidden email]
>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>
>>>>>  
>>>>>    
>>>>>      
>>>>>        
>>>>>          
>>>>  
>>>>    
>>>>      
>>>>        
>>>  
>>>    
>>>      
>>  
>>    
>
>
>  


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: R: R: R: R: R: R: R: R: serialize_branches() and q value....

Bogdan-Andrei Iancu
Hi Mauro,

Super ! I'm glad it's solved - I will do also the backport on 1.4.

Thanks and lot for the help in troubleshooting.

Regards,
Bogdan

Mauro Davi' wrote:

> Hi Bogdan
>
> Well done!!! Now it works fine!!!
>
> Thank You
>     MD
>
> -----Messaggio originale-----
> Da: Bogdan-Andrei Iancu [mailto:[hidden email]]
> Inviato: martedì 10 marzo 2009 21:42
> A: Mauro Davi'
> Cc: [hidden email]
> Oggetto: Re: R: R: R: R: R: [OpenSIPS-Users] R: R: serialize_branches() and q value....
>
> Hi Mauro,
>
> There are some fishy things here.
>
> 1) the Q for user3 is 300 (as per DB example) and not 299 (as per logs)
>
> 2) the branches (in log) are not q ordered.
>
> 3) the flags don't seam to be correctly set.
>
> I made on 1.5 a fix (related to (2)) - could you please update and re-test.
>
> Regards,
> Bogdan
>
>
> Mauro Davi' wrote:
>  
>> Hi Bogdan,
>>
>> I update the source code from the svn and I do the test.
>>
>> The qvalue are now loaded correctly from the database, how you can see below:
>>
>> Mar 10 15:17:07 [8789] DBG:core:serialize_branches: loaded <sip:user1@192.168.193.54:33680;rinstance=323bd97f8a0dae2e<99><99><99>ÃÃÃÃíïë>, q=100 q_fl<0>
>> Mar 10 15:17:07 [8789] DBG:core:serialize_branches: loaded <sip:user3@192.168.193.60:6651;rinstance=312f0937682fe662>, q=299 q_flag <16>
>> Mar 10 15:17:07 [8789] DBG:core:serialize_branches: loaded <sip:user2@192.168.193.61:6328;rinstance=88793931d487ca32>, q=200 q_flag <0>
>>
>> But when in the failure_route I call the next_branches() function the result is:
>>
>> Mar 10 15:17:16 [8795] DBG:core:next_branches: branch is <sip:user2@192.168.193.61:6328;rinstance=88793931d487ca32>
>> params(0xb5f83000, 0xb6198524), called from usr_avp.c: destroy_avp(352)
>> freeing frag. 0xb619850c alloc'ed from usr_avp.c: add_avp(116)
>> Mar 10 15:17:16 [8795] DBG:core:next_branches: branch is <sip:user3@192.168.193.60:6651;rinstance=312f0937682fe662>
>> params(0xb5f83000, 0xb61984a8), called from usr_avp.c: destroy_avp(352)
>> freeing frag. 0xb6198490 alloc'ed from usr_avp.c: add_avp(116)
>>
>> i.e. the second call is a parallel fork with user2 and user 3... and not a serialized call to user2...
>>
>> I think that the bug is present yet.... But now the problem is in the next_branches function where the qvalue aren't correctly stored...
>>
>> Best regards
>>     MD
>>
>> -----Messaggio originale-----
>> Da: Bogdan-Andrei Iancu [mailto:[hidden email]]
>> Inviato: lunedì 9 marzo 2009 13:40
>> A: Mauro Davi'
>> Cc: [hidden email]
>> Oggetto: Re: R: R: R: R: [OpenSIPS-Users] R: R: serialize_branches() and q value....
>>
>> Hi Mauro,
>>
>> indeed there is a issue here. The Q value for the default branch (the
>> RURI) was not properly pushed into the branches.....I made a fix on SVN
>> - could you please update and give it another try?
>>
>> Thanks and regards,
>> Bogdan
>>
>> Mauro Davi' wrote:
>>  
>>    
>>> Hi Bogdan,
>>>
>>> yes I use usrloc module with DB MODE set to 3.
>>>
>>> I have 4 UAC registered to the system.
>>> After the registration procedure I modified, manually, the q value on the DB, in the location table, in the following way:
>>>
>>> Username Domain q
>>>
>>> User1 domain.com 0.10
>>> User2 domain.com 0.20
>>> User3 domain.com 0.30
>>>
>>> The executed script code is the following:
>>>
>>> seturi("sip:[hidden email]");
>>> lookup("location");
>>> append_branch();
>>> seturi("sip:[hidden email]");
>>> lookup("location");
>>> append_branch()
>>> seturi("sip:[hidden email]");
>>> lookup("location");
>>> serialize_branches();
>>> t_relay();
>>>
>>> The on_failureroute function is:
>>>
>>> failure_route[1]{
>>> if ( next_branches() )
>>> t_relay();
>>> }
>>>
>>> This is the log result...
>>>
>>> Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user2@192.168.193.61:6500;rinstance=f846856f765b6605>, q=-1 q_flag <0>
>>> Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user1@192.168.193.60:7020;rinstance=2f7556d27898c691>, q=-1 q_flag <0>
>>> Mar  5 14:47:10 [32494] DBG:core:serialize_branches: loaded <sip:user3@192.168.193.54:6638;rinstance=721b473849350f3c>, q=299 q_flag <16>
>>>
>>> It isn't correct because user1 must have q value equal to 100 and user2 must have qvalue equal to 200... Only the last added sip uri (sip:[hidden email]) have the correct DB q value.
>>>
>>> The result was a serialization of two call. The first one to user3, and the second one a parallal fork to user1 and user2...
>>>
>>> Regards
>>> MD
>>>
>>> P.S. there is a way to modify the qvalue associated to a sip uri or it is possible only in registration phase? Thanks.
>>>
>>> -----Messaggio originale-----
>>> Da: Bogdan-Andrei Iancu [mailto:[hidden email]]
>>> Inviato: giovedì 5 marzo 2009 10:25
>>> A: Mauro Davi'; [hidden email]
>>> Oggetto: Re: R: R: R: [OpenSIPS-Users] R: R: serialize_branches() and q value....
>>>
>>> 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:[hidden email]]
>>>> Inviato: martedì 3 marzo 2009 18:34
>>>> A: Mauro Davi'
>>>> Cc: [hidden email]
>>>> 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:[hidden email]]
>>>>> Inviato: martedì 3 marzo 2009 18:06
>>>>> A: Mauro Davi'
>>>>> Cc: [hidden email]
>>>>> 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=[hidden email]
>>>>>> Lookup("location");
>>>>>> Append_branch();
>>>>>> $ru=[hidden email]
>>>>>> Lookup("location");
>>>>>> Serialize_branches();
>>>>>> T_relay();
>>>>>>
>>>>>> The result was:
>>>>>>
>>>>>> Mar  2 17:36:53 [26014] DBG:core:serialize_branches: loaded <sip:user1@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@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@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@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@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: [hidden email] [mailto:[hidden email]] Per conto di Bogdan-Andrei Iancu
>>>>>> Inviato: giovedì 26 febbraio 2009 19:08
>>>>>> A: Mauro Davi'
>>>>>> Cc: [hidden email]
>>>>>> 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@ipaddress:port)...
>>>>>>>
>>>>>>> But I cannot add, for example the following branch:
>>>>>>>
>>>>>>> Append_branch("sip:[hidden email]","0.1")
>>>>>>> Append_branch("sip:[hidden email]","0.2")
>>>>>>> Append_branch("sip:[hidden email]","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:[hidden email]";
>>>>>>> lookup("location");
>>>>>>> #Now $ru contain the resolved URI of user1
>>>>>>> append_branch("$ru","0.1");
>>>>>>> $ru="sip:[hidden email]";
>>>>>>> lookup("location");
>>>>>>> #Now $ru contain the resolved URI of user2
>>>>>>> append_branch("$ru","0.2");
>>>>>>> $ru="sip:[hidden email]";
>>>>>>> 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:[hidden email]]
>>>>>>> Inviato: mercoledì 25 febbraio 2009 15:14
>>>>>>> A: Mauro Davi'
>>>>>>> Cc: [hidden email]
>>>>>>> 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:[hidden email]", 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:[hidden email];q=0.1"
>>>>>>>>
>>>>>>>> Or:
>>>>>>>>
>>>>>>>> Append_branch("sip:[hidden email];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:[hidden email]]
>>>>>>>> Inviato: mercoledì 25 febbraio 2009 14:54
>>>>>>>> A: Mauro Davi'
>>>>>>>> Cc: [hidden email]
>>>>>>>> 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,
>>>>>>>>> [hidden email] and [hidden email] <mailto:[hidden email]>.
>>>>>>>>>
>>>>>>>>> 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:[hidden email]";
>>>>>>>>>
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> else
>>>>>>>>>
>>>>>>>>> {
>>>>>>>>>
>>>>>>>>> append_branch();
>>>>>>>>>
>>>>>>>>> $ru="sip:[hidden email]";
>>>>>>>>>
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> 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
>>>>>>>>> [hidden email]
>>>>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>>>>>  
>>>>>>>>>    
>>>>>>>>>      
>>>>>>>>>        
>>>>>>>>>          
>>>>>>>>>            
>>>>>>>>>              
>>>>>>>>>                
>>>>>>>>>                  
>>>>>>>>  
>>>>>>>>    
>>>>>>>>      
>>>>>>>>        
>>>>>>>>          
>>>>>>>>            
>>>>>>>>              
>>>>>>>>                
>>>>>>>  
>>>>>>>    
>>>>>>>      
>>>>>>>        
>>>>>>>          
>>>>>>>            
>>>>>>>              
>>>>>> _______________________________________________
>>>>>> Users mailing list
>>>>>> [hidden email]
>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>>
>>>>>>  
>>>>>>    
>>>>>>      
>>>>>>        
>>>>>>          
>>>>>>            
>>>>>  
>>>>>    
>>>>>      
>>>>>        
>>>>>          
>>>>  
>>>>    
>>>>      
>>>>        
>>>  
>>>    
>>>      
>>  
>>    
>
>
>  


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users