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
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);