[OpenSIPS-Users] Using dispatcher and t_replicate()

Jody Rudolph jrudolph at qx.net
Thu Dec 23 16:14:50 CET 2010


Bogdan,

This is how I have I have been using it as a workaround. This does work 100% of the time and $du is being populated by the dispatcher addresses in round-robin.

	ds_select_dst("1", "4");
	switch($du)
      	{
      	  	case "sip:192.168.1.1":
 	          	xlog("reg destination address is $du\n");
	          	t_replicate("sip:192.168.1.1");
	        break;
	        case "sip:192.168.1.2":
	        	xlog("reg destination address is $du\n");
                	t_replicate("sip:192.168.1.2");
            break;
	 }	


I changed it to the if statement you suggested and I also see the expected behavior. The correct IPs are being logged from the xlog("replicating to $du \n"); statement. 

The strange part is this:

Using the following

>   if ( ds_select_dst("1", "4") ) {
>         xlog("replicating to $du \n");
>         t_replicate("$du");
>   } else {
>         xlog("failure to select");
>   }

 
The first 4 registrations processed triggered a "failure to select". After that, it started working as expected. I have since restarted the service 5 times with no occurrences of failure.

After this I reverted to the original configuration of

		ds_select_dst("1", "4");
		t_replicate("$du");

Dec 23 10:09:39 [16005] ERROR:core:parse_uri: bad uri,  state 0 parsed: <<nul> (4) / <<null>> (6)
Dec 23 10:09:39 [16005] ERROR:tm:uri2proxy: bad_uri: <null>
Dec 23 10:09:39 [16005] ERROR:tm:t_forward_nonack: failure to add branches



I will run it in the if statement for a while and monitor the results.


Thanks,
Jody


On Dec 23, 2010, at 9:33 AM, Bogdan-Andrei Iancu wrote:

> Hi Jody,
> 
> in 1.6.4, it seams that $du is NULL (no value) - are you sure the ds_select_dst() was successful ? put it in an "if" statement :
> 
>   if ( ds_select_dst("1", "4") ) {
>         xlog("replicating to $du \n");
>         t_replicate("$du");
>   } else {
>         xlog("failure to select");
>   }
> 
> Regards,
> Bogdan
> 
> Jody Rudolph wrote:
>> Bogdan,
>> 
>> I am using SVN latest 1.6 via:
>> |svn co https://opensips.svn.sourceforge.net/svnroot/opensips/branches/1.6 opensips_1_6|
>> I tried last week at 1.6.3 and received the errors I posted in the previous email. After 1.6.4 the error messages have changed slightly but still seems to be related.
>> 
>> 
>> call to function:
>> 
>> ds_select_dst("1", "4");
>> t_replicate("$du");
>> 
>> 1.6.3 error:
>>>> Dec 20 13:16:02 [12858] ERROR:core:parse_uri: uri too short: <$du> (3)
>>>> Dec 20 13:16:02 [12858] ERROR:tm:uri2proxy: bad_uri: $du
>> 
>> 1.6.4 error:
>> 
>> Dec 22 10:18:50 [11874] ERROR:core:parse_uri: bad uri,  state 0 parsed: <<nul> (4) / <<null>> (6)
>> Dec 22 10:18:50 [11874] ERROR:tm:uri2proxy: bad_uri: <null>
>> Dec 22 10:18:50 [11874] ERROR:tm:t_forward_nonack: failure to add branches
>> 
>> Thanks,
>> Jody
>> 
>> 
>> On Dec 22, 2010, at 5:18 AM, Bogdan-Andrei Iancu wrote:
>> 
>>> Hi Jody,
>>> 
>>> What version / revsion number are you testing with ?
>>> 
>>> That add-on in still there (trunk and 1.6) as far I checked.
>>> 
>>> Regards,
>>> Bogdan
>>> 
>>> 
>>> Jody Rudolph wrote:
>>>> This was added and working at one time but in the latest SVN it seems to have reverted back to non-working. Am I missing a setting that has changed?
>>>> ds_select_dst("1", "4");
>>>> t_replicate("$du");
>>>> Dec 20 13:16:02 [12858] ERROR:core:parse_uri: uri too short: <$du> (3)
>>>> Dec 20 13:16:02 [12858] ERROR:tm:uri2proxy: bad_uri: $du
>>>> Thanks,
>>>> Jody Rudolph
>>>>   On Oct 4, 2010, at 9:57 AM, Razvan Crainea wrote:
>>>> 
>>>> >/  Hi Jody,
>>>> />/ />/ I just made a commit with this feature. Now t_replicate can also receive />/ a pseudo-variable as argument.
>>>> />/ Please update from svn (it is both in trunk and 1.6).
>>>> />/ />/ Regards,
>>>> />/ />/ -- />/ Razvan Crainea
>>>> />/ www.voice-system.ro <http://www.voice-system.ro> <http://www.voice-system.ro>
>>>> />/ />/ />/ />/ On 10/04/2010 02:17 PM, Bogdan-Andrei Iancu wrote:
>>>> />>/ Hi Jody,
>>>> />>/ />>/ Indeed, this is not a nice solution - let me put on the TODO list the
>>>> />>/ support for variables in t_replicate.
>>>> />>/ />>/ Regards,
>>>> />>/ Bogdan
>>>> />>/ />>/ Jody Rudolph wrote:
>>>> />>>/ Just in case anyone might need a workaround here like I did I thought I would share what I did to get it to work.
>>>> />>>/ />>>/ Since the servers I am load balancing registrations across share a database backend for registrations I am trying to spread the registrations across single servers using dispatcher.
>>>> />>>/ />>>/ Lets say we have the following 3 IPs:
>>>> />>>/ />>>/ 192.168.1.2
>>>> />>>/ 192.168.1.3
>>>> />>>/ 192.168.1.4
>>>> />>>/ />>>/ />>>/ Since we cant use (that I can figure out anyway)
>>>> />>>/ ds_select_dst("1", "4");
>>>> />>>/ t_replicate($du);
>>>> />>>/ />>>/ I used:
>>>> />>>/ />>>/ ds_select_dst("1", "4");
>>>> />>>/ switch($du)
>>>> />>>/         {
>>>> />>>/             case "sip:192.168.1.2":
>>>> />>>/                 xlog("reg destination address is $du\n");
>>>> />>>/                 t_replicate("sip:192.168.1.2");
>>>> />>>/             break;
>>>> />>>/             case "sip:192.168.1.3":
>>>> />>>/                 xlog("reg destination address is $du\n");
>>>> />>>/                 t_replicate("sip:192.168.1.3");
>>>> />>>/             break;
>>>> />>>/             case "sip:192.168.1.4":
>>>> />>>/                 xlog("reg destination address is $du\n");
>>>> />>>/                 t_replicate("sip:192.168.1.4");
>>>> />>>/             break;
>>>> />>>/             default:
>>>> />>>/                 xlog("Dispatching Reg failed: $du\n");
>>>> />>>/                 sl_reply_error();
>>>> />>>/             break;
>>>> />>>/        }
>>>> />>>/ exit;
>>>> />>>/ />>>/ Not the cleanest way of doing it, but it works.
>>>> />>>/ />>>/ />>>/ />>>/ Thanks,
>>>> />>>/ Jody Rudolph
>>>> />>>/ />>>>/ />>>/ />>>/ _______/
>>>> 
>>>> 
>>>> 
>>>> ------------------------------------------------------------------------
>>>> 
>>>> _______________________________________________
>>>> Users mailing list
>>>> Users at lists.opensips.org <mailto:Users at lists.opensips.org>
>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>> 
>>> 
>>> 
>>> -- 
>>> Bogdan-Andrei Iancu
>>> OpenSIPS Event - expo, conf, social, bootcamp
>>> 2 - 4 February 2011, ITExpo, Miami,  USA
>>> www.voice-system.ro <http://www.voice-system.ro>
>>> 
>>> 
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>> 
>> ------------------------------------------------------------------------
>> 
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>  
> 
> 
> -- 
> Bogdan-Andrei Iancu
> OpenSIPS Event - expo, conf, social, bootcamp
> 2 - 4 February 2011, ITExpo, Miami,  USA
> www.voice-system.ro
> 
> 
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users




More information about the Users mailing list