[SR-Users] uri==myself

Karthik Srinivasan ksriniva2002 at gmail.com
Fri Jul 20 06:48:34 CEST 2018


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>
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> 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> 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
>>>
>>> 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> 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
>>>> www.twitter.com/miconda -- www.linkedin.com/in/miconda
>>>> Kamailio World Conference -- www.kamailioworld.com
>>>>
>>>>
>>>
>>> --
>>> Daniel-Constantin Mierla -- www.asipto.comwww.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/20180719/7224c34b/attachment.html>


More information about the sr-users mailing list