commit 657618ba9bd96830b0a283c28db203bf9fffb15d Author: teor teor@torproject.org Date: Wed Nov 21 19:51:34 2018 +1000
Entry Nodes: Mark outdated dirservers in reasonably live consensuses
Fixes bug 28569; bugfix on Tor 0.3.2.5-alpha. --- changes/bug28569 | 3 +++ src/feature/nodelist/microdesc.c | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/changes/bug28569 b/changes/bug28569 new file mode 100644 index 000000000..45a57a80a --- /dev/null +++ b/changes/bug28569 @@ -0,0 +1,3 @@ + o Minor bugfixes (unit tests, directory clients): + - Mark outdated dirservers when Tor only has a reasonably live consensus. + Fixes bug 28569; bugfix on 0.3.2.5-alpha. diff --git a/src/feature/nodelist/microdesc.c b/src/feature/nodelist/microdesc.c index 146c772da..3f5085412 100644 --- a/src/feature/nodelist/microdesc.c +++ b/src/feature/nodelist/microdesc.c @@ -108,10 +108,12 @@ microdesc_note_outdated_dirserver(const char *relay_digest) { char relay_hexdigest[HEX_DIGEST_LEN+1];
- /* Don't register outdated dirservers if we don't have a live consensus, - * since we might be trying to fetch microdescriptors that are not even - * currently active. */ - if (!networkstatus_get_live_consensus(approx_time())) { + /* If we have a reasonably live consensus, then most of our dirservers should + * still be caching all the microdescriptors in it. Reasonably live + * consensuses are up to a day old. But microdescriptors expire 7 days after + * the last consensus that referenced them. */ + if (!networkstatus_get_reasonably_live_consensus(approx_time(), + FLAV_MICRODESC)) { return; }