[SR-Users] Dispatcher call id hash for server side invite
Ryan Wagoner
rswagoner at gmail.com
Thu Aug 10 22:48:48 CEST 2017
On Thu, Aug 10, 2017 at 9:05 AM, Daniel Tryba <d.tryba at pocos.nl> wrote:
> On Thu, Aug 10, 2017 at 08:51:24AM -0400, Ryan Wagoner wrote:
> > Thanks for the explanation! I finally got the dispatcher working in an
> > active / passive Kamailio cluster in front of three FreePBX servers. I
> was
> > using the Asipto Kamailio and Asterisk real time guide as a starting
> point
> > so it had the WITHINDLG route. I ended up modifying the TOASTERISK route
> to
> > call ds_select_dst and the FROMASTERSK route uses an htable for matching
> > IPs off a mySQL view of the Kamailio dispatcher table.
>
> Am I interpreting this as: you wanto check if a message is coming from a
> dispatcher?
> If yes, take a look at ds_is_from_list:
> https://kamailio.org/docs/modules/stable/modules/
> dispatcher.html#dispatcher.f.ds_is_from_list
>
>
>
Exactly so the traffic from asterisk is trusted and isn't modified. I just
swapped my while loop for that function and it's good to go. I can't
believe I didn't see that earlier.
In my REGFWD route I have this chunk of code to lookup the dispatcher
IP/port from the same hash table before calling uac_req_send(). The
regserver column contains the dispatcher set id. Is there a way I can call
ds_select and then access the IP / port variables directly?
#!if WITH_DISPATCHER
sql_query("castdb", "select regserver from sipusers where name =
'$au'","ra");
if($dbr(ra=>rows)>0)
{
$var(rip) = $sht(dispatcherHosts=>set::$dbr(ra=>[0,0])[0]);
$var(rport) = $sht(dispatcherHosts=>port::$var(rip));
}
else
{
return;
}
sql_result_free("ra");
#!else
$var(rip) = $sel(cfg_get.asterisk.bindip);
$var(rport) = $sel(cfg_get.asterisk.bindport);
#!endif
$uac_req(method)="REGISTER";
$uac_req(ruri)="sip:" + $var(rip) + ":" + $var(rport);
$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();
Thanks,
Ryan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20170810/d4e237ac/attachment.html>
More information about the sr-users
mailing list