Commit 34e47d10 authored by Sebastian Hahn's avatar Sebastian Hahn
Browse files

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).
parent aa178aae
Loading
Loading
Loading
Loading
+8 −5
Changes for src/or/config.c: 8 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -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) {
+5 −0
Changes for src/or/or.h: 5 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -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. */