diff options
author | Nick Mathewson <nickm@torproject.org> | 2017-11-08 13:22:16 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2017-11-08 13:22:16 -0500 |
commit | 0dc55fb24756c5ae80e71f6fce93d97d73efd2fc (patch) | |
tree | 0df2c4a9fa618efc7f58c273089b5d5e534895cd | |
parent | 04d4786cc40b2d80b4cd34e7d5339b0100861c8f (diff) | |
download | tor-0dc55fb24756c5ae80e71f6fce93d97d73efd2fc.tar.gz tor-0dc55fb24756c5ae80e71f6fce93d97d73efd2fc.zip |
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.
-rw-r--r-- | changes/bug23985 | 9 | ||||
-rw-r--r-- | src/or/routerlist.c | 5 |
2 files changed, 14 insertions, 0 deletions
diff --git a/changes/bug23985 b/changes/bug23985 new file mode 100644 index 0000000000..9cb5937962 --- /dev/null +++ b/changes/bug23985 @@ -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. diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 2365f28fd2..1b7c81ad5f 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -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 */ |