]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Move circuitbuildtimeout config check.
authorMike Perry <mikeperry-git@fscked.org>
Mon, 14 Sep 2009 11:03:57 +0000 (04:03 -0700)
committerMike Perry <mikeperry-git@fscked.org>
Wed, 16 Sep 2009 22:58:42 +0000 (15:58 -0700)
We want it to be under our control so it doesn't mess
up initialization. This is likely the cause for
the bug the previous assert-adding commit (09a75ad) was
trying to address.

src/or/circuitbuild.c
src/or/config.c
src/or/or.h

index 4999078c90f7d017bdd2c8ea209faca996f19a43..a141795a1edd0f7fb8c7a40874bebc603e3ee349 100644 (file)
@@ -141,6 +141,11 @@ circuit_build_times_init(circuit_build_times_t *cbt)
 
   if (!unit_tests && get_options()->CircuitBuildTimeout) {
     cbt->timeout = get_options()->CircuitBuildTimeout;
+    if (cbt->timeout < BUILD_TIMEOUT_MIN_VALUE) {
+      log_warn(LD_CIRC, "Config CircuitBuildTimeout too low. Setting to %d",
+               BUILD_TIMEOUT_MIN_VALUE);
+      cbt->timeout = BUILD_TIMEOUT_MIN_VALUE;
+    }
   } else {
     cbt->timeout = BUILD_TIMEOUT_INITIAL_VALUE;
   }
@@ -697,6 +702,12 @@ circuit_build_times_check_too_many_timeouts(circuit_build_times_t *cbt)
 
   cbt->timeout = lround(timeout/1000.0);
 
+  if (cbt->timeout < BUILD_TIMEOUT_MIN_VALUE) {
+    log_warn(LD_CIRC, "Reset buildtimeout to low value %lf. Setting to %d",
+             timeout, BUILD_TIMEOUT_MIN_VALUE);
+    cbt->timeout = BUILD_TIMEOUT_MIN_VALUE;
+  }
+
   log_notice(LD_CIRC,
              "Reset circuit build timeout to %d (%lf, Xm: %d, a: %lf) based "
              "on %d recent circuit times", cbt->timeout, timeout, cbt->Xm,
@@ -761,6 +772,12 @@ circuit_build_times_set_timeout(circuit_build_times_t *cbt)
   cbt->have_computed_timeout = 1;
   cbt->timeout = lround(timeout/1000.0);
 
+  if (cbt->timeout < BUILD_TIMEOUT_MIN_VALUE) {
+    log_warn(LD_CIRC, "Set buildtimeout to low value %lf. Setting to %d",
+             timeout, BUILD_TIMEOUT_MIN_VALUE);
+    cbt->timeout = BUILD_TIMEOUT_MIN_VALUE;
+  }
+
   log_info(LD_CIRC,
            "Set circuit build timeout to %d (%lf, Xm: %d, a: %lf) based on "
            "%d circuit times", cbt->timeout, timeout, cbt->Xm, cbt->alpha,
index 7c2623eee9b1fe3e57b664acc01195bde61d2c50..0712fbee7dd8bbbda4b6b58c754a762dec4d85ef 100644 (file)
@@ -2919,11 +2919,6 @@ compute_publishserverdescriptor(or_options_t *options)
 /** Highest allowable value for RendPostPeriod. */
 #define MAX_DIR_PERIOD (MIN_ONION_KEY_LIFETIME/2)
 
-/** Lowest allowable value for CircuitBuildTimeout; values too low will
- * increase network load because of failing connections being retried, and
- * might prevent users from connecting to the network at all. */
-#define MIN_CIRCUIT_BUILD_TIMEOUT 3
-
 /** Lowest allowable value for MaxCircuitDirtiness; if this is too low, Tor
  * will generate too many circuits and potentially overload the network. */
 #define MIN_MAX_CIRCUIT_DIRTINESS 10
@@ -3370,12 +3365,6 @@ options_validate(or_options_t *old_options, or_options_t *options,
     options->RendPostPeriod = MAX_DIR_PERIOD;
   }
 
-  if (options->CircuitBuildTimeout < MIN_CIRCUIT_BUILD_TIMEOUT) {
-    log(LOG_WARN, LD_CONFIG, "CircuitBuildTimeout option is too short; "
-      "raising to %d seconds.", MIN_CIRCUIT_BUILD_TIMEOUT);
-    options->CircuitBuildTimeout = MIN_CIRCUIT_BUILD_TIMEOUT;
-  }
-
   if (options->MaxCircuitDirtiness < MIN_MAX_CIRCUIT_DIRTINESS) {
     log(LOG_WARN, LD_CONFIG, "MaxCircuitDirtiness option is too short; "
       "raising to %d seconds.", MIN_MAX_CIRCUIT_DIRTINESS);
index b27526fb84c5d86504f8a630dd313f4a1d6aff78..4ee5abf21d4b5849ab9428433d22c15dccac09f9 100644 (file)
@@ -2887,6 +2887,9 @@ typedef uint32_t build_time_t;
 /** Have we received a cell in the last 90 seconds? */
 #define NETWORK_LIVE_INTERVAL 90
 
+/** Lowest allowable value for CircuitBuildTimeout */
+#define BUILD_TIMEOUT_MIN_VALUE 3
+
 /** Initial circuit build timeout */
 #define BUILD_TIMEOUT_INITIAL_VALUE 60