[SR-Users] Kamailio and several Asterisk - Realtime DB Integration

Daniel-Constantin Mierla miconda at gmail.com
Fri Apr 8 13:33:47 CEST 2011


Hello,

On 4/8/11 12:28 AM, Alejandro Rios P. wrote:
>
> Hi all,
>
> I am testing the scenario described here: 
> http://kb.asipto.com/asterisk:realtime:kamailio-3.1.x-asterisk-1.6.2-astdb
>
> It works great with one instance of Asterisk, but now that I'm testing 
> with two Asterisk instances to load balance, and I see a problem 
> regarding the registration forwarding to the second Asterisk.
>
> I tried adding a second "uac_req_send()" bellow the first one, but 
> Kamailio only sends the first request and the REGISTER never gets to 
> the second Asterisk:
>
> # Forward REGISTER to Asterisk
> route[REGFWD]  {
> 	if(!is_method("REGISTER"))
> 	{
> 		return;
> 	}
> 	$var(rip)  =  $sel(cfg_get.asterisk.bindip);
> 	$uac_req(method)="REGISTER";
> 	$uac_req(ruri)="sip:"  +  $var(rip)  +  ":"  +  $sel(cfg_get.asterisk.bindport);
> 	$uac_req(furi)="sip:"  +  $au+  "@"  +  $var(rip);
> 	$uac_req(turi)="sip:"  +  $au+  "@"  +  $var(rip);
> 	$uac_req(hdrs)="Contact:<sip:"  +  $au+  "@"
> 				+  $sel(cfg_get.kamailio.bindip)
> 				+  ":"  +  $sel(cfg_get.kamailio.bindport)  +  ">\r\n";
> 	if($sel(contact.expires)  !=  $null)
> 		$uac_req(hdrs)=  $uac_req(hdrs)  +  "Expires:"  +  $sel(contact.expires)  +  "\r\n";
> 	else
> 		$uac_req(hdrs)=  $uac_req(hdrs)  +  "Expires:"  +  $hdr(Expires)  +  "\r\n";
> 	uac_req_send();
>
>          $uac_req(all) = null;
>
> 	$var(rip2)  =  $sel(cfg_get.asterisk2.bindip);
> 	$uac_req(method)="REGISTER";
> 	$uac_req(ruri)="sip:"  +  $var(rip2)  +  ":"  +  $sel(cfg_get.asterisk2.bindport);
> 	$uac_req(furi)="sip:"  +  $au+  "@"  +  $var(rip2);
> 	$uac_req(turi)="sip:"  +  $au+  "@"  +  $var(rip2);
> 	$uac_req(hdrs)="Contact:<sip:"  +  $au+  "@"
> 				+  $sel(cfg_get.kamailio.bindip)
> 				+  ":"  +  $sel(cfg_get.kamailio.bindport)  +  ">\r\n";
> 	if($sel(contact.expires)  !=  $null)
> 		$uac_req(hdrs)=  $uac_req(hdrs)  +  "Expires:"  +  $sel(contact.expires)  +  "\r\n";
> 	else
> 		$uac_req(hdrs)=  $uac_req(hdrs)  +  "Expires:"  +  $hdr(Expires)  +  "\r\n";
> 	uac_req_send();
>
> }
>
> I also tried appending another branch and sending the second  
> uac_req_send() from there, but it is not being sent.
>
> How can I use uac_req_send() several times for the same request or in 
> parallel?
it should work one after the other. append_branch() does not affect 
uac_req_send() at all, this is a separate request built from scratch.

Do you get any error message in the syslog? Can you watch the traffic on 
all interfaces 'ngrep -d any -qt -W byline port 5060' ?

I see you assign '$uac_req(all) = null;', it should be '$uac_req(all) = 
$null;' - but I guess it was a copy&paste thing.

Cheers,
Daniel

-- 
Daniel-Constantin Mierla
http://www.asipto.com




More information about the sr-users mailing list