Browse Source

the other half of the is_local_IP patch

svn:r8581
Roger Dingledine 19 years ago
parent
commit
246fecb585
2 changed files with 5 additions and 3 deletions
  1. 1 0
      src/or/circuitbuild.c
  2. 4 3
      src/or/config.c

+ 1 - 0
src/or/circuitbuild.c

@@ -1443,6 +1443,7 @@ compute_preferred_testing_list(const char *answer)
         ((tor_version_as_new_as(r->platform,"0.1.1.21-cvs") &&
           !tor_version_as_new_as(r->platform,"0.1.2.0-alpha-cvs")) ||
          tor_version_as_new_as(r->platform,"0.1.2.1-alpha")) &&
+        !is_local_IP(r->addr) &&
         !router_get_trusteddirserver_by_digest(r->cache_info.identity_digest))
       smartlist_add(choices, r));
   router = smartlist_choose(choices);

+ 4 - 3
src/or/config.c

@@ -1729,9 +1729,10 @@ is_local_IP(uint32_t ip)
 {
   if (is_internal_IP(ip, 0))
     return 1;
-  /* Check whether ip is on the same /24 as we are.
-   *
-   * It's possible that this next check will hit before the first time
+  /* Check whether ip is on the same /24 as we are. */
+  if (get_options()->EnforceDistinctSubnets == 0)
+    return 0;
+  /* It's possible that this next check will hit before the first time
    * resolve_my_address actually succeeds.  (For clients, it is likely that
    * resolve_my_address will never be called at all).  In those cases,
    * last_resolved_addr will be 0, and so checking to see whether ip is on the