From: Michael L. Young Date: Fri, 18 Oct 2013 15:11:46 +0000 (+0000) Subject: Remove Port Restriction When Checking For NAT X-Git-Tag: 11.7.0-rc1~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=44826ac192060706fb9c1caec75437d992983cbb;p=thirdparty%2Fasterisk.git Remove Port Restriction When Checking For NAT 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 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 44f9e0f742..5ab91c2954 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -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);