From 5c310a4fa2c13a52dc3fd39368788c3e75be6cb0 Mon Sep 17 00:00:00 2001 From: unixninja92 Date: Wed, 25 Sep 2013 01:45:00 +0200 Subject: [PATCH] Added max value to PredictedCircsRelevanceTime. --- src/or/config.c | 12 ++++++++++++ src/or/or.h | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/or/config.c b/src/or/config.c index 460bf3ec41..11320746a2 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -2385,6 +2385,11 @@ compute_publishserverdescriptor(or_options_t *options) * services can overload the directory system. */ #define MIN_REND_POST_PERIOD (10*60) +/** Higest allowable value for PredictedCircsRelevanceTime; if this is + * too high, our selection of exits will decrease for an extended + * period of time to an uncomfortable level .*/ +#define MAX_PREDICTED_CIRCS_RELEVANCE (24*60*60) + /** Highest allowable value for RendPostPeriod. */ #define MAX_DIR_PERIOD (MIN_ONION_KEY_LIFETIME/2) @@ -2832,6 +2837,13 @@ options_validate(or_options_t *old_options, or_options_t *options, options->RendPostPeriod = MAX_DIR_PERIOD; } + if (options->PredictedCircsRelevanceTime > + MAX_PREDICTED_CIRCS_RELEVANCE) { + log_warn(LD_CONFIG, "PredictedCircsRelevanceTime is too large; " + "clipping to %ds.", MAX_PREDICTED_CIRCS_RELEVANCE); + options->PredictedCircsRelevanceTime = MAX_PREDICTED_CIRCS_RELEVANCE; + } + if (options->Tor2webMode && options->LearnCircuitBuildTimeout) { /* LearnCircuitBuildTimeout and Tor2webMode are incompatible in * two ways: diff --git a/src/or/or.h b/src/or/or.h index 5ca63e605b..0df34cd825 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3673,9 +3673,9 @@ typedef struct { * a new one? */ int MaxCircuitDirtiness; /**< Never use circs that were first used more than this interval ago. */ - int PredictedCircsRelevanceTime; /** How long after we've seen a request for + int PredictedCircsRelevanceTime; /** How long after we've requested a connection for * a given port, do we want to continue - * to make connections to the same port? */ + * to pick exits that support that port? */ uint64_t BandwidthRate; /**< How much bandwidth, on average, are we willing * to use in a second? */ uint64_t BandwidthBurst; /**< How much bandwidth, at maximum, are we willing