[tor-commits] [tor/release-0.2.2] Fix GETINFO config-text for private networks

arma at torproject.org arma at torproject.org
Tue Mar 8 23:17:28 UTC 2011


commit 34e47d1052bdb76780a4dedbbce613972c896bad
Author: Sebastian Hahn <sebastian at torproject.org>
Date:   Sat Feb 26 09:06:09 2011 +0100

    Fix GETINFO config-text for private networks
    
    In private networks, the defaults for some options are changed. This
    means that in options_validate(), where we're testing that the defaults
    are what we think they are, we fail. Use a workaround by setting a
    hidden configuration option _UsingTestingTorNetwork when we have altered
    the configuration this way, so that options_validate() can do the right
    thing.
    
    Fixes bug 2250, bugfix on 0.2.1.2-alpha (the version introducing private
    network options).
---
 src/or/config.c |   13 ++++++++-----
 src/or/or.h     |    5 +++++
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/src/or/config.c b/src/or/config.c
index 4d2c872..771e2cf 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -393,6 +393,7 @@ static config_var_t _option_vars[] = {
   VAR("__HashedControlSessionPassword", LINELIST, HashedControlSessionPassword,
       NULL),
   V(MinUptimeHidServDirectoryV2, INTERVAL, "24 hours"),
+  V(_UsingTestingTorNetwork,    BOOL,     "0"),
 
   { NULL, CONFIG_TYPE_OBSOLETE, 0, NULL }
 };
@@ -418,6 +419,7 @@ static config_var_t testing_tor_network_defaults[] = {
   V(TestingAuthDirTimeToLearnReachability, INTERVAL, "0 minutes"),
   V(TestingEstimatedDescriptorPropagationTime, INTERVAL, "0 minutes"),
   V(MinUptimeHidServDirectoryV2, INTERVAL, "0 minutes"),
+  V(_UsingTestingTorNetwork,    BOOL,     "1"),
   { NULL, CONFIG_TYPE_OBSOLETE, 0, NULL }
 };
 #undef VAR
@@ -3655,7 +3657,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
   /* Keep changes to hard-coded values synchronous to man page and default
    * values table. */
   if (options->TestingV3AuthInitialVotingInterval != 30*60 &&
-      !options->TestingTorNetwork) {
+      !options->TestingTorNetwork && !options->_UsingTestingTorNetwork) {
     REJECT("TestingV3AuthInitialVotingInterval may only be changed in testing "
            "Tor networks!");
   } else if (options->TestingV3AuthInitialVotingInterval < MIN_VOTE_INTERVAL) {
@@ -3666,7 +3668,8 @@ options_validate(or_options_t *old_options, or_options_t *options,
   }
 
   if (options->TestingV3AuthInitialVoteDelay != 5*60 &&
-      !options->TestingTorNetwork) {
+      !options->TestingTorNetwork && !options->_UsingTestingTorNetwork) {
+
     REJECT("TestingV3AuthInitialVoteDelay may only be changed in testing "
            "Tor networks!");
   } else if (options->TestingV3AuthInitialVoteDelay < MIN_VOTE_SECONDS) {
@@ -3674,7 +3677,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
   }
 
   if (options->TestingV3AuthInitialDistDelay != 5*60 &&
-      !options->TestingTorNetwork) {
+      !options->TestingTorNetwork && !options->_UsingTestingTorNetwork) {
     REJECT("TestingV3AuthInitialDistDelay may only be changed in testing "
            "Tor networks!");
   } else if (options->TestingV3AuthInitialDistDelay < MIN_DIST_SECONDS) {
@@ -3689,7 +3692,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
   }
 
   if (options->TestingAuthDirTimeToLearnReachability != 30*60 &&
-      !options->TestingTorNetwork) {
+      !options->TestingTorNetwork && !options->_UsingTestingTorNetwork) {
     REJECT("TestingAuthDirTimeToLearnReachability may only be changed in "
            "testing Tor networks!");
   } else if (options->TestingAuthDirTimeToLearnReachability < 0) {
@@ -3699,7 +3702,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
   }
 
   if (options->TestingEstimatedDescriptorPropagationTime != 10*60 &&
-      !options->TestingTorNetwork) {
+      !options->TestingTorNetwork && !options->_UsingTestingTorNetwork) {
     REJECT("TestingEstimatedDescriptorPropagationTime may only be changed in "
            "testing Tor networks!");
   } else if (options->TestingEstimatedDescriptorPropagationTime < 0) {
diff --git a/src/or/or.h b/src/or/or.h
index 74ff743..c742f09 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -2841,6 +2841,11 @@ typedef struct {
    */
   double CircuitPriorityHalflife;
 
+  /** Set to true if the TestingTorNetwork configuration option is set.
+   * This is used so that options_validate() has a chance to realize that
+   * the defaults have changed. */
+  int _UsingTestingTorNetwork;
+
 } or_options_t;
 
 /** Persistent state for an onion router, as saved to disk. */





More information about the tor-commits mailing list