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

Alejandro Rios P. alerios at debian.org
Fri Apr 8 18:14:24 CEST 2011


Hello Daniel

Thanks for pointing out to the SIP traces. I found out that it if the
request is to be sent to a destination using a port other than 5060, it is
required to add the $uac_req(ouri) parameter too:

$uac_req(ouri)="sip:" + $var(asterisk_ip) + ":" + $var(asterisk_port);
....

$uac_req(ouri)="sip:" + $var(asterisk2_ip) + ":" + $var(asterisk2_port);


Thanks!

Alejandro Rios Peña
<alerios at debian.org>

DISCLAIMER: The opinions expressed are my own, and not necessarily those of
my employer.

<http://www.avatar.com.co>


2011/4/8 Daniel-Constantin Mierla <miconda at gmail.com>

> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20110408/9a9b8750/attachment.htm>


More information about the sr-users mailing list