Main request is the first branch.
So consider changed $ru after lookup as the first (0) branch.
Other branches will be appended as addition.

On Fri, 8 Sept 2023, 14:03 Benoît Panizzon, <benoit.paniz...@imp.ch> wrote:

> 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
> ______________________________________________________
>
__________________________________________________________
Kamailio - Users Mailing List - Non Commercial Discussions
To unsubscribe send an email to sr-users-le...@lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the 
sender!
Edit mailing list options or unsubscribe:

Reply via email to