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:[email protected]] > Inviato: martedì 10 marzo 2009 21:42 > A: Mauro Davi' > Cc: [email protected] > 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:[email protected]:33680;rinstance=323bd97f8a0dae2e<99><99><99>ÃÃÃÃÃïë>, >> q=100 q_fl<0> >> Mar 10 15:17:07 [8789] DBG:core:serialize_branches: loaded >> <sip:[email protected]:6651;rinstance=312f0937682fe662>, q=299 q_flag <16> >> Mar 10 15:17:07 [8789] DBG:core:serialize_branches: loaded >> <sip:[email protected]: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:[email protected]: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:[email protected]: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:[email protected]] >> Inviato: lunedì 9 marzo 2009 13:40 >> A: Mauro Davi' >> Cc: [email protected] >> 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:[email protected]"); >>> lookup("location"); >>> append_branch(); >>> seturi("sip:[email protected]"); >>> lookup("location"); >>> append_branch() >>> seturi("sip:[email protected]"); >>> 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:[email protected]:6500;rinstance=f846856f765b6605>, q=-1 q_flag <0> >>> Mar 5 14:47:10 [32494] DBG:core:serialize_branches: loaded >>> <sip:[email protected]:7020;rinstance=2f7556d27898c691>, q=-1 q_flag <0> >>> Mar 5 14:47:10 [32494] DBG:core:serialize_branches: loaded >>> <sip:[email protected]: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:[email protected]) 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:[email protected]] >>> Inviato: giovedì 5 marzo 2009 10:25 >>> A: Mauro Davi'; [email protected] >>> 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:[email protected]] >>>> Inviato: martedì 3 marzo 2009 18:34 >>>> A: Mauro Davi' >>>> Cc: [email protected] >>>> 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:[email protected]] >>>>> Inviato: martedì 3 marzo 2009 18:06 >>>>> A: Mauro Davi' >>>>> Cc: [email protected] >>>>> 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: >>>>>> >>>>>> [email protected] >>>>>> Lookup("location"); >>>>>> Append_branch(); >>>>>> [email protected] >>>>>> Lookup("location"); >>>>>> Serialize_branches(); >>>>>> T_relay(); >>>>>> >>>>>> The result was: >>>>>> >>>>>> Mar 2 17:36:53 [26014] DBG:core:serialize_branches: loaded >>>>>> <sip:[email protected]:6685;rinstance=0f314641b36adb7d>, q=-1 q_flag >>>>>> <0> >>>>>> Mar 2 17:36:53 [26014] DBG:core:serialize_branches: loaded >>>>>> <sip:[email protected]: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:[email protected]:6685;rinstance=0f314641b36adb7d>, q=-1 q_flag >>>>>> <0> >>>>>> Mar 2 17:42:04 [26014] DBG:core:serialize_branches: loaded >>>>>> <sip:[email protected]:54218;rinstance=e70bfc2dadad8857>, q=-1 q_flag >>>>>> <0> >>>>>> Mar 2 17:42:04 [26014] DBG:core:serialize_branches: loaded >>>>>> <sip:[email protected]: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: [email protected] >>>>>> [mailto:[email protected]] Per conto di Bogdan-Andrei >>>>>> Iancu >>>>>> Inviato: giovedì 26 febbraio 2009 19:08 >>>>>> A: Mauro Davi' >>>>>> Cc: [email protected] >>>>>> 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:usern...@ipaddress:port)... >>>>>>> >>>>>>> But I cannot add, for example the following branch: >>>>>>> >>>>>>> Append_branch("sip:[email protected]","0.1") >>>>>>> Append_branch("sip:[email protected]","0.2") >>>>>>> Append_branch("sip:[email protected]","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:[email protected]"; >>>>>>> lookup("location"); >>>>>>> #Now $ru contain the resolved URI of user1 >>>>>>> append_branch("$ru","0.1"); >>>>>>> $ru="sip:[email protected]"; >>>>>>> lookup("location"); >>>>>>> #Now $ru contain the resolved URI of user2 >>>>>>> append_branch("$ru","0.2"); >>>>>>> $ru="sip:[email protected]"; >>>>>>> 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:[email protected]] >>>>>>> Inviato: mercoledì 25 febbraio 2009 15:14 >>>>>>> A: Mauro Davi' >>>>>>> Cc: [email protected] >>>>>>> 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:[email protected]", 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:[email protected];q=0.1" >>>>>>>> >>>>>>>> Or: >>>>>>>> >>>>>>>> Append_branch("sip:[email protected];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:[email protected]] >>>>>>>> Inviato: mercoledì 25 febbraio 2009 14:54 >>>>>>>> A: Mauro Davi' >>>>>>>> Cc: [email protected] >>>>>>>> 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, >>>>>>>>> [email protected] and [email protected] <mailto:[email protected]>. >>>>>>>>> >>>>>>>>> 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:[email protected]"; >>>>>>>>> >>>>>>>>> } >>>>>>>>> >>>>>>>>> else >>>>>>>>> >>>>>>>>> { >>>>>>>>> >>>>>>>>> append_branch(); >>>>>>>>> >>>>>>>>> $ru="sip:[email protected]"; >>>>>>>>> >>>>>>>>> } >>>>>>>>> >>>>>>>>> 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 >>>>>>>>> [email protected] >>>>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> _______________________________________________ >>>>>> Users mailing list >>>>>> [email protected] >>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> >>>> >>> >>> >>> >> >> > > > _______________________________________________ Users mailing list [email protected] http://lists.opensips.org/cgi-bin/mailman/listinfo/users
