Hi Yuriy
> You also can filter it in the request route and not create branch wich
> doesn't belong this server ( you can achieve that by verifying ucl
> variable details), or making it UDP branch being forwarded to proper
> server which handles the particular connection.
I have started trying to solve this in request route.
I'm still truggling on how to distinguish local and non local
registrations.
I have 4 CPE registered to the same AOR.
kamclt ul show [AOR] does show they are registered. 3 on the local
registrar (with a socket) and one with socket [not set].
If I repeat on the other registrar I get matching information. One with
a socket, the other three are [not set].
So trying to understand the hard way, what happens:
$var(i)=0;
while($var(i)<=$branch(count))
{
$var(socket) = $(ulc(aor=>socket)[$var(i)]);
xlog("L_INFO", "$cfg(route): DEBUG BEFORE: IDX: $var(i) TOTAL: $branch(count) URI: $(branch(uri)[$var(i)]) Socket: $var(socket)\n");
$var(i) = $var(i) + 1;
}
$var(i)=0;
while($var(i)<=$branch(count))
{
$var(socket) = $(ulc(aor=>socket)[$var(i)]);
xlog("L_INFO", "$cfg(route): DEBUG REMOVE: IDX: $var(i) TOTAL: $branch(count) URI: $(branch(uri)[$var(i)]) Socket: $var(socket)\n");
if ($var(socket) == 0) {
xlog("L_INFO", "$cfg(route): Dropping Branch IDX $var(i) URI: $(branch(uri)[$var(i)]) Socket: $var(socket)\n");
$(branch(uri)[$var(i)]) = $null;
} else {
$var(i) = $var(i) + 1; # do NOT increment index as the branches got renumbered.
}
}
$var(i)=0;
while($var(i)<=$branch(count))
{
$var(socket) = $(ulc(aor=>socket)[$var(i)]);
xlog("L_INFO", "$cfg(route): DEBUG AFTER: IDX: $var(i) TOTAL: $branch(count) URI: $(branch(uri)[$var(i)]) Socket: $var(socket)\n");
$var(i) = $var(i) + 1;
}
What I did not yet understand.
$branch(count) is 3 !
So, does kamailio only consider the 3 registrations WITH a socket?
Or is this the index starting with 0, thus 4 contacts?
When I do $(branch(uri)[$var(i)]) = $null; then $branch(count) is decremented. I suppose because the next contact takes that index, this is why I do NOT increment $var(i).
But I then get no $(branch(uri)[$var(i)]) on the highest index, suggesting that I only see 3 contacts, not all 4 of them.
Indeed, my 'BEFORE' loop did not output the contact registered on the other registrar.
So WHY is there still the INVITE being sent to the fourth, non local contact?
=> Confused!
--
Mit freundlichen Grüssen
-Benoît Panizzon- @ HomeOffice und normal erreichbar
--
I m p r o W a r e A G - Leiter Commerce Kunden
______________________________________________________
Zurlindenstrasse 29 Tel +41 61 826 93 00
CH-4133 Pratteln Fax +41 61 826 93 01
Schweiz Web http://www.imp.ch
______________________________________________________