Yes, i see it defaulting there. Thanks again for the help. Karthik
On Fri, Jul 20, 2018 at 7:57 AM, Daniel-Constantin Mierla <[email protected] > wrote: > 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 < > [email protected]> 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 < >> [email protected]> 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 < >>> [email protected]> 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 < >>>> [email protected]> 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 >>>> >>>> >>> >> > > -- > Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- > www.linkedin.com/in/miconda > Kamailio World Conference -- www.kamailioworld.com > >
_______________________________________________ Kamailio (SER) - Users Mailing List [email protected] https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
