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
This commit is contained in:
Roger Dingledine 2004-07-13 01:25:39 +00:00
parent 3294b514d3
commit 017d7d1fb3
2 changed files with 6 additions and 2 deletions

View File

@ -726,8 +726,6 @@ int onionskin_answer(circuit_t *circ, unsigned char *payload, unsigned char *key
return 0; return 0;
} }
extern int has_fetched_directory; /* from main.c */
/** Choose a length for a circuit of purpose <b>purpose</b>. /** Choose a length for a circuit of purpose <b>purpose</b>.
* Default length is 3 + the number of endpoints that would give something * Default length is 3 + the number of endpoints that would give something
* away. If the routerlist <b>routers</b> doesn't have enough routers * away. If the routerlist <b>routers</b> doesn't have enough routers

View File

@ -14,6 +14,7 @@ extern or_options_t options; /* command-line and config-file options */
/********* START VARIABLES **********/ /********* START VARIABLES **********/
extern circuit_t *global_circuitlist; /* from circuitlist.c */ extern circuit_t *global_circuitlist; /* from circuitlist.c */
extern int has_fetched_directory; /* from main.c */
/********* END VARIABLES ************/ /********* 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) 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) { if (n_circuit_failures > MAX_CIRCUIT_FAILURES) {
/* too many failed circs in a row. don't try. */ /* too many failed circs in a row. don't try. */
// log_fn(LOG_INFO,"%d failures so far, not trying.",n_circuit_failures); // log_fn(LOG_INFO,"%d failures so far, not trying.",n_circuit_failures);