Hi Peter,

Indeed, that's a good point - the `fix_nated_contact()` is changing the contact (with the IP and port from the network level), messing up the matching.

Regards,

Bogdan-Andrei Iancu

OpenSIPS Founder and Developer
  https://www.opensips-solutions.com
OpenSIPS Summit 2019
  https://www.opensips.org/events/Summit-2019Amsterdam/

On 8/22/19 10:16 PM, Peter Pulham wrote:
Hi,

A bit more testing and I realised that if I xlog the contact $ct it printed the value of the contact in the INVITE:

<sip:[email protected]:49710;ob>

Which looked fine and matched the usrloc table. However, if I xlog $ct.field(uri) it printed a value with the public IP:

sip:[email protected]:49710;ob

So it looks like I need to do my checking before I do any NAT contact fixup.

This also explains why non NAT'd contacts were working.

Thanks for the help, set me on the right path to finally get to the issue.

Many thanks

On Thu, Aug 22, 2019 at 10:33 AM Bogdan-Andrei Iancu <[email protected] <mailto:[email protected]>> wrote:

    In this case, the function will perform a string matching between
    the first valid contact URI from the message and the registered
    contacts (the `Contact` field). Again, it is a string matching
    over the entire SIP URI.

    So far, based on your logs, I would say they should match. Could
    you doublecheck again ?

    Regards,

    Bogdan-Andrei Iancu

    OpenSIPS Founder and Developer
       https://www.opensips-solutions.com
    OpenSIPS Summit 2019
       https://www.opensips.org/events/Summit-2019Amsterdam/

    On 8/22/19 12:07 PM, Peter Pulham wrote:
    Hi,

    I am calling is_contact_registered("location")

    For the mi command, I used "mi ul_show_contact location
    [email protected] <mailto:[email protected]>" in opensips-cli

    Many thanks

    On Thu, Aug 22, 2019 at 10:00 AM Bogdan-Andrei Iancu
    <[email protected] <mailto:[email protected]>> wrote:

        Hi Peter,

        How exactly do you invoke the is_contact_registered()
        function (as params) for your script?

        Regards,

        Bogdan-Andrei Iancu

        OpenSIPS Founder and Developer
           https://www.opensips-solutions.com
        OpenSIPS Summit 2019
           https://www.opensips.org/events/Summit-2019Amsterdam/

        On 8/21/19 10:34 PM, Peter Pulham wrote:
        Hi,

        Thanks for the input.

        Adding the logging of $ct before call is_contact_registered
        show this (also added a log for when it returned false):

        Aug 21 19:24:52 ip-10-100-100-62
        /usr/local/sbin/opensips[21114]: CONTACT OF REGISTER: "Peter
        Pulham" <sip:[email protected]:49710;ob>
        Aug 21 19:24:52 ip-10-100-100-62
        /usr/local/sbin/opensips[21114]: IS CONTACT REGISTERED
        RETURNED FALSE

        The contact from the ul_show_contact command shows the same
        contact:

        {
            "AOR": "[email protected] <mailto:[email protected]>",
            "Contacts": [
                {
                    "Contact": "sip:[email protected]:49710;ob",
                    "ContactID": "1491535901589791905",
                    "Expires": 18,
                    "Q": "",
                    "Callid": "8..5AzWHdLmUQNXHdQhwDR3qMwOGPaWH",
                    "Cseq": 56286,
                    "User-agent": "Telephone 1.4",
                    "Received": "sip:x.x.x.x:49710",
                    "State": "CS_NEW",
                    "Flags": 0,
                    "Cflags": "NAT",
                    "Socket": "udp:z.z.z.z:5060",
                    "Methods": 8063
                }
            ]
        }

        y.y.y.y is the same in the log as the mi output.

        Through testing, I have realised that if the contact is not
        NAT'd then the is_contact_registered returns true.

        Any input appreciated.

        On Wed, Aug 21, 2019 at 11:56 AM Bogdan-Andrei Iancu
        <[email protected] <mailto:[email protected]>> wrote:

            Hi Peter,

            To doublecheck, do this:

            * before calling the is_contact_registered(), use xlog()
            to print the contact you are testing (use $ct).

            * before running the test, use the ul_show_contact MI
            function [1] to print the in-memory contacts for the
            desired AOR.


            [1]
            
https://opensips.org/html/docs/modules/2.4.x/usrloc.html#mi_ul_show_contact

            Regards,

            Bogdan-Andrei Iancu

            OpenSIPS Founder and Developer
               https://www.opensips-solutions.com
            OpenSIPS Summit 2019
               https://www.opensips.org/events/Summit-2019Amsterdam/

            On 08/16/2019 06:38 PM, Peter Pulham wrote:
            Hi,

            I am using mid_registrar to save registrations to the
            location table.

            If I use is_registered - everything works as expected.
            So AOR matching is working.

            However, when I use is_contact_registered - it returns
            false.

            I have checked the contact header in the request
            against the contact value of the AOR in the db and they
            match (the request has a display name but I am
            presuming only the uri is checked.

            The endpoint is behind NAT, but the contacts match in
            the db and request. Can some explain what is actually
            checked when using is_contact_registered?

            Many thanks


            _______________________________________________
            Users mailing list
            [email protected]  <mailto:[email protected]>
            http://lists.opensips.org/cgi-bin/mailman/listinfo/users




_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to