[SR-Users] uri==myself

Daniel-Constantin Mierla miconda at gmail.com
Fri Jul 20 14:57:10 CEST 2018


The evaluation for uri==myself condition is done inside src/core/route.c
starting with line 1817. I see there that it takes default SIP port if
none is set in the r-uri.

Cheers,
Daniel


On 20.07.18 06:48, Karthik Srinivasan wrote:
> So, i think i have determined the root cause of my issue:
>
> Background info:
>  - I have a request URI of an INVITE that contains no port number.
>  - My application is not listening on the default port of 5060  
>
> The is_myself(...) function handles a 'no port in request uri'
> differently than uri==myself.
>
> By that i mean, is_myself(...) does not default the port to 5060 when
> looking up aliases/(which ip addresses and ports the process is bound
> to); it simply does not take port number into account (if no port
> exists in request uri) when searching the alias list.  BUT, 
> uri==myself does default to 5060 and hence tries to find an alias
> binding to 5060.
>
> So, is_myself("$ru") passes in my case;  uri==myself fails.  
>
> Can you point me to the place in the source code where 5060 is being
> set as default to the uri variable when request uri has no port number
> please?
>
> I don't intend to change this defaulting behavior; I am just curious
> where it is set.
>
> Thanks,
>
> Karthik
>
> On Thu, Jul 19, 2018 at 3:37 PM, Karthik Srinivasan
> <ksriniva2002 at gmail.com <mailto:ksriniva2002 at gmail.com>> wrote:
>
>     standby,  i have the debug mode spitting out tons of logs now.  
>
>     time for me to review. 
>
>     will let you know if i need help.
>
>     thanks,
>
>     karthik
>
>     On Thu, Jul 19, 2018 at 3:15 PM, Karthik Srinivasan
>     <ksriniva2002 at gmail.com <mailto:ksriniva2002 at gmail.com>> wrote:
>
>         Unfortunately same result as before:
>
>          $var(myself) = 0;
>            if (uri =~ "<regex string to match>" || uri == myself){
>               $var(myself) = 1;
>               xlog("L_INFO", "[$ci] in uri == myself check: var myself
>         = $var(myself)");
>            }
>
>            if (uri =~ "<regex string to match>" || is_myself("$ru")){
>               $var(myself) = 1;
>               xlog("L_INFO", "[$ci] in is_myself check: var myself =
>         $var(myself)");
>            }
>
>         The only log that prints out is the one that says 'in
>         is_myself check ...'(the second if statement.)
>
>         I have verified that if there's a regular expression match
>         then both log writes print.  Regular expression match happens
>         when a SIP REGISTER request comes across the pipe.
>
>         Something odd is going on with the computation of  uri ==
>         myself vs is_myself("$ru").
>
>         Is there a way i can inspect what myself and uri have in them?   
>
>         Karthik
>
>
>
>
>         On Thu, Jul 19, 2018 at 2:18 PM, Daniel-Constantin Mierla
>         <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>
>             Hello,
>
>             things are different that one may expect from evaluation
>             of an expression compared with other established
>             scripting/programming languages. One thing to be sure you
>             are aware of are the return code evaluation:
>
>               -
>             https://www.kamailio.org/wiki/tutorials/faq/main#how_is_the_function_return_cod
>             <https://www.kamailio.org/wiki/tutorials/faq/main#how_is_the_function_return_cod>
>
>             To be sure of proper behaviour, you should do:
>
>             if(uri =~ "<regex string to match>" || uri == myself) {
>
>             $var(myself) =1;
>
>             } else {
>
>             $var(myself) = 0;
>
>             }
>
>             Same with is_myself("$ru") instead of uri == myself.
>
>             Try and see if you get different values for $var(myself).
>
>             Cheers,
>             Daniel
>
>             On 19.07.18 19:09, Karthik Srinivasan wrote:
>>             Yes, they are used at the very same place. here is a code
>>             snippet of where i added it for testing purposes:
>>
>>
>>             route[INIT_VARS] {
>>
>>             $var(myself) = uri =~ "<regex string to match>" || uri ==
>>             myself;
>>             //if i print $var(myself) it prints 0 
>>             $var(myself) = uri =~ "<regex string to match>" ||
>>             is_myself("$ru");
>>             //if i print $var(myself) it prints 1 
>>
>>             // in both cases above the regex part isn't supposed to
>>             match and hence correctly returns false.
>>             ...
>>
>>             }
>>
>>             route{
>>
>>                route(INIT_VARS);
>>
>>             ...
>>             }
>>
>>             Thanks,
>>
>>             Karthik
>>
>>             On Thu, Jul 19, 2018 at 11:46 AM, Daniel-Constantin
>>             Mierla <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>>
>>                 Hello,
>>
>>
>>                 On 19.07.18 18:32, Karthik Srinivasan wrote:
>>                 > Hello,
>>                 >
>>                 > Can someone explain to me why statement A returns
>>                 True and statement B
>>                 > returns False.
>>                 >
>>                 > Statement A:
>>                 > is_myself("$ru")
>>                 >
>>                 > Statement B:
>>                 > uri == myself
>>                 >
>>                 >
>>                 > Isn't uri and $ru referencing the same data?   
>>                 >
>>                 > With my current config i am expecting the is_myself
>>                 to return True;  i
>>                 > was expecting the same for Statement B but
>>                 unfortunately it is
>>                 > returning False.
>>                 >
>>                 they are supposed to be the same in this case.
>>
>>                 Are they used at the same place in config? Note that
>>                 $ru can be changed
>>                 by different functions such as those from registrar,
>>                 dispatcher, lcr, ...
>>
>>                 Cheers,
>>                 Daniel
>>
>>                 -- 
>>                 Daniel-Constantin Mierla -- www.asipto.com
>>                 <http://www.asipto.com>
>>                 www.twitter.com/miconda
>>                 <http://www.twitter.com/miconda> --
>>                 www.linkedin.com/in/miconda
>>                 <http://www.linkedin.com/in/miconda>
>>                 Kamailio World Conference -- www.kamailioworld.com
>>                 <http://www.kamailioworld.com>
>>
>>
>
>             -- 
>             Daniel-Constantin Mierla -- www.asipto.com <http://www.asipto.com>
>             www.twitter.com/miconda <http://www.twitter.com/miconda> -- www.linkedin.com/in/miconda
>             <http://www.linkedin.com/in/miconda>
>             Kamailio World Conference -- www.kamailioworld.com <http://www.kamailioworld.com>
>
>
>
>

-- 
Daniel-Constantin Mierla -- www.asipto.com
www.twitter.com/miconda -- www.linkedin.com/in/miconda
Kamailio World Conference -- www.kamailioworld.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20180720/2fd481cd/attachment.html>


More information about the sr-users mailing list