From: Roger Dingledine Date: Tue, 13 Jul 2004 01:25:39 +0000 (+0000) Subject: refuse to build a circuit before the directory has arrived X-Git-Tag: tor-0.0.8pre1~84 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=017d7d1fb3f03cc421186c92bfb2e1350b4b7c0b;p=thirdparty%2Ftor.git refuse to build a circuit before the directory has arrived this will prevent a few of the 'couldn't decrypt onionskin' errors, maybe svn:r2036 --- diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index ca92186c3e..fe158a8f3e 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -726,8 +726,6 @@ int onionskin_answer(circuit_t *circ, unsigned char *payload, unsigned char *key return 0; } -extern int has_fetched_directory; /* from main.c */ - /** Choose a length for a circuit of purpose purpose. * Default length is 3 + the number of endpoints that would give something * away. If the routerlist routers doesn't have enough routers diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 9b971f599e..d6422d0b54 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -14,6 +14,7 @@ extern or_options_t options; /* command-line and config-file options */ /********* START VARIABLES **********/ extern circuit_t *global_circuitlist; /* from circuitlist.c */ +extern int has_fetched_directory; /* from main.c */ /********* END VARIABLES ************/ @@ -590,6 +591,11 @@ static int n_circuit_failures = 0; circuit_t *circuit_launch_by_identity(uint8_t purpose, const char *exit_digest) { + if (!has_fetched_directory) { + log_fn(LOG_DEBUG,"Haven't fetched directory yet; cancelling circuit launch."); + return NULL; + } + if (n_circuit_failures > MAX_CIRCUIT_FAILURES) { /* too many failed circs in a row. don't try. */ // log_fn(LOG_INFO,"%d failures so far, not trying.",n_circuit_failures);