Procházet zdrojové kódy

Merge remote branch 'arma/bug1982_2'

Resolved a minor conflict in:
	src/or/circuitbuild.c
Nick Mathewson před 13 roky
rodič
revize
3aec655694
3 změnil soubory, kde provedl 11 přidání a 11 odebrání
  1. 5 0
      changes/bug1982
  2. 6 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.

+ 6 - 6
src/or/circuitbuild.c

@@ -3884,15 +3884,15 @@ 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_nodes(entry_nodes, options->EntryNodes, 0);
   SMARTLIST_FOREACH(entry_nodes, const node_t *,node,
                     smartlist_add(entry_fps, (void*)node->identity));
+
   SMARTLIST_FOREACH(entry_guards, entry_guard_t *, e, {
     if (smartlist_digest_isin(entry_fps, e->identity))
       smartlist_add(old_entry_guards_on_list, e);

+ 0 - 5
src/or/config.c

@@ -3107,11 +3107,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");