Don't delay descriptor fetches when missing info needed for circuits

When we have fewer than 15 descriptors to fetch, we will delay the
fetch for a little while.  That's fine, if we can go ahead and build
circuits... but if not, it's a poor choice indeed.

Fixes bug 23985; bugfix on 0.1.1.11-alpha.

In 0.3.0.3-alpha, when we made primary guard descriptors necessary
for circuit building, this situation got worse.
This commit is contained in:
Nick Mathewson 2017-11-08 13:22:16 -05:00
parent 04d4786cc4
commit 0dc55fb247
2 changed files with 14 additions and 0 deletions

9
changes/bug23985 Normal file
View File

@ -0,0 +1,9 @@
o Minor bugfixes (bootstrapping):
- Fetch descriptors aggressively whenever we lack enough
to build circuits, regardless of how many descriptors we are missing.
Previously, we would delay launching the fetch when we had fewer than
15 missing descriptors, even if some of those descriptors were
blocking circuits from building. Fixes bug 23985; bugfix on
0.1.1.11-alpha. The effects of this bug became worse in 0.3.0.3-alpha,
when we began treating missing descriptors from our primary guards
as a reason to delay circuits.

View File

@ -5035,6 +5035,11 @@ launch_descriptor_downloads(int purpose,
log_debug(LD_DIR,
"There are enough downloadable %ss to launch requests.",
descname);
} else if (! router_have_minimum_dir_info()) {
log_debug(LD_DIR,
"We are only missing %d %ss, but we'll fetch anyway, since "
"we don't yet have enough directory info.",
n_downloadable, descname);
} else {
/* should delay */