]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Remove Port Restriction When Checking For NAT
authorMichael L. Young <elgueromexicano@gmail.com>
Fri, 18 Oct 2013 15:11:46 +0000 (15:11 +0000)
committerMichael L. Young <elgueromexicano@gmail.com>
Fri, 18 Oct 2013 15:11:46 +0000 (15:11 +0000)
When trying to determine if a peer is behind NAT, we should not be using the
ports when comparing addresses.

This patch removes the port from being checked and just useds the addresses
now.

(closes issue ASTERISK-22729)
Reported by: Michael L. Young
Tested by: Michael L. Young
Patches:
    asterisk-remove-using-port-for-nat-check.diff
                                     uploaded by Michael L. Young (license 5026)

Review: https://reviewboard.asterisk.org/r/2927/

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@401182 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index 44f9e0f7428f137ab40c3a577db3f3a2aaa86980..5ab91c2954f79c59d34bc71ba1f5c592219f28bc 100644 (file)
@@ -17943,9 +17943,9 @@ static void check_for_nat(const struct ast_sockaddr *addr, struct sip_pvt *p)
                return;
        }
 
-       if (ast_sockaddr_cmp(addr, &p->recv)) {
-               char *tmp_str = ast_strdupa(ast_sockaddr_stringify(addr));
-               ast_debug(3, "NAT detected for %s / %s\n", tmp_str, ast_sockaddr_stringify(&p->recv));
+       if (ast_sockaddr_cmp_addr(addr, &p->recv)) {
+               char *tmp_str = ast_strdupa(ast_sockaddr_stringify_addr(addr));
+               ast_debug(3, "NAT detected for %s / %s\n", tmp_str, ast_sockaddr_stringify_addr(&p->recv));
                p->natdetected = 1;
                if (ast_test_flag(&p->flags[2], SIP_PAGE3_NAT_AUTO_RPORT)) {
                        ast_set_flag(&p->flags[0], SIP_NAT_FORCE_RPORT);