]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
evil nat scenarios
authorBrian West <brian@freeswitch.org>
Tue, 27 Apr 2010 18:56:37 +0000 (13:56 -0500)
committerBrian West <brian@freeswitch.org>
Tue, 27 Apr 2010 18:56:37 +0000 (13:56 -0500)
src/mod/endpoints/mod_sofia/sofia_presence.c
src/mod/endpoints/mod_sofia/sofia_reg.c

index 2a9296bb6bd7ebfc57fff9eb4e827e5bbc6638f7..d84d764efb987cdd5dabe6c683a53ba399eee4b7 100644 (file)
@@ -1751,6 +1751,11 @@ void sofia_presence_handle_sip_i_subscribe(int status,
                        }
                }
 
+               if (!is_nat && sip && sip->sip_via && sip->sip_via->v_port &&
+                       atoi(sip->sip_via->v_port) == 5060 && network_port != 5060 ) {
+                       is_nat = "via port";
+               }
+
                if (!is_nat && profile->nat_acl_count) {
                        uint32_t x = 0;
                        int ok = 1;
index d9c60aa5a6d1a1cf044e043e0145e1958aac68a5..1f07b944ef45ca7aee66d920fa60cd617d995c4b 100644 (file)
@@ -1364,6 +1364,11 @@ void sofia_reg_handle_sip_i_register(nua_t *nua, sofia_profile_t *profile, nua_h
                }
        }
 
+       if (!is_nat && sip && sip->sip_via && sip->sip_via->v_port &&
+               atoi(sip->sip_via->v_port) == 5060 && network_port != 5060 ) {
+               is_nat = "via port";
+       }
+
        if (!is_nat && profile->nat_acl_count) {
                uint32_t x = 0;
                int ok = 1;