Merge branch 'bug5452'

This commit is contained in:
Nick Mathewson 2012-06-11 14:44:26 -04:00
commit f0f70ba6f1
2 changed files with 22 additions and 0 deletions

4
changes/bug5452 Normal file
View File

@ -0,0 +1,4 @@
o Minor features:
- Check CircuitBuildTimeout and LearnCircuitBuildTimeout in
options_validate(); warn if LearnCircuitBuildTimeout is disabled
and CircuitBuildTimeout is set unreasonably low. Fixes bug 5452.

View File

@ -3320,6 +3320,13 @@ compute_publishserverdescriptor(or_options_t *options)
* expose more information than we're comfortable with. */ * expose more information than we're comfortable with. */
#define MIN_HEARTBEAT_PERIOD (30*60) #define MIN_HEARTBEAT_PERIOD (30*60)
/** Lowest recommended value for CircuitBuildTimeout; if it is set too low
* and LearnCircuitBuildTimeout is off, the failure rate for circuit
* construction may be very high. In that case, if it is set below this
* threshold emit a warning.
* */
#define RECOMMENDED_MIN_CIRCUIT_BUILD_TIMEOUT (10)
/** Return 0 if every setting in <b>options</b> is reasonable, and a /** Return 0 if every setting in <b>options</b> is reasonable, and a
* permissible transition from <b>old_options</b>. Else return -1. * permissible transition from <b>old_options</b>. Else return -1.
* Should have no side effects, except for normalizing the contents of * Should have no side effects, except for normalizing the contents of
@ -3716,6 +3723,17 @@ options_validate(or_options_t *old_options, or_options_t *options,
options->LearnCircuitBuildTimeout = 0; options->LearnCircuitBuildTimeout = 0;
} }
if (!(options->LearnCircuitBuildTimeout) &&
options->CircuitBuildTimeout < RECOMMENDED_MIN_CIRCUIT_BUILD_TIMEOUT) {
log_warn(LD_CONFIG,
"CircuitBuildTimeout is shorter (%d seconds) than recommended "
"(%d seconds), and LearnCircuitBuildTimeout is disabled. "
"If tor isn't working, raise this value or enable "
"LearnCircuitBuildTimeout.",
options->CircuitBuildTimeout,
RECOMMENDED_MIN_CIRCUIT_BUILD_TIMEOUT );
}
if (options->MaxCircuitDirtiness < MIN_MAX_CIRCUIT_DIRTINESS) { if (options->MaxCircuitDirtiness < MIN_MAX_CIRCUIT_DIRTINESS) {
log_warn(LD_CONFIG, "MaxCircuitDirtiness option is too short; " log_warn(LD_CONFIG, "MaxCircuitDirtiness option is too short; "
"raising to %d seconds.", MIN_MAX_CIRCUIT_DIRTINESS); "raising to %d seconds.", MIN_MAX_CIRCUIT_DIRTINESS);