Bläddra i källkod

allow countries and IP addresses in EntryNodes

Roger Dingledine 13 år sedan
förälder
incheckning
0ed8d5a537
3 ändrade filer med 10 tillägg och 11 borttagningar
  1. 5 0
      changes/bug1982
  2. 5 6
      src/or/circuitbuild.c
  3. 0 5
      src/or/config.c

+ 5 - 0
changes/bug1982

@@ -0,0 +1,5 @@
+  o Major features:
+    - Allow EntryNodes to include country codes like {de} or IP addresses
+      or network masks. Previously we had disallowed these options
+      because we didn't have an efficient way to keep the list up to
+      date. Resolves bug 1982.

+ 5 - 6
src/or/circuitbuild.c

@@ -3820,12 +3820,11 @@ entry_guards_prepend_from_config(or_options_t *options)
 
   /* Split entry guards into those on the list and those not. */
 
-  /* XXXX022 Now that we allow countries and IP ranges in EntryNodes, this is
-   *  potentially an enormous list. For now, we disable such values for
-   *  EntryNodes in options_validate(); really, this wants a better solution.
-   *  Perhaps we should do this calculation once whenever the list of routers
-   *  changes or the entrynodes setting changes.
-   */
+  /* Now that we allow countries and IP ranges in EntryNodes, this is
+   * potentially an enormous list. It's not so bad though because we
+   * only call this function when a) we're making a new circuit, and b)
+   * we've called directory_info_has_arrived() or changed our EntryNodes
+   * since the last time we made a circuit. */
   routerset_get_all_routers(entry_routers, options->EntryNodes, 0);
   SMARTLIST_FOREACH(entry_routers, routerinfo_t *, ri,
                     smartlist_add(entry_fps,ri->cache_info.identity_digest));

+ 0 - 5
src/or/config.c

@@ -3088,11 +3088,6 @@ options_validate(or_options_t *old_options, or_options_t *options,
              "features to be broken in unpredictable ways.");
   }
 
-  if (options->EntryNodes && !routerset_is_list(options->EntryNodes)) {
-    /* XXXX fix this; see entry_guards_prepend_from_config(). */
-    REJECT("IPs or countries are not yet supported in EntryNodes.");
-  }
-
   if (options->AuthoritativeDir) {
     if (!options->ContactInfo && !options->TestingTorNetwork)
       REJECT("Authoritative directory servers must set ContactInfo");