From: David Goulet Date: Wed, 2 Aug 2017 17:20:59 +0000 (-0400) Subject: Fix check_expired_networkstatus_callback() if condition X-Git-Tag: tor-0.3.2.1-alpha~164^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5b03c7ba6d899e19e8f3e0a58bd5df8bb7bbf1d0;p=thirdparty%2Ftor.git Fix check_expired_networkstatus_callback() if condition The condition was always true meaning that we would reconsider updating our directory information every 2 minutes. If valid_until is 6am today, then now - 24h == 1pm yesterday which means that "valid_until < (now - 24h)" is false. But at 6:01am tomorrow, "valid_until < (now - 24h)" becomes true which is that point that we shouldn't trust the consensus anymore. Fixes #23091 Signed-off-by: David Goulet --- diff --git a/changes/bug23091 b/changes/bug23091 new file mode 100644 index 0000000000..7dfb7e4180 --- /dev/null +++ b/changes/bug23091 @@ -0,0 +1,6 @@ + o Minor bugfixes (consensus expiry): + - Tor would reconsider updating its directory information every 2 minutes + instead of only doing it for a consensus that is more than 24 hours old + (badly expired). This specific check is done in the tor main loop + callback that validates if we have an expired consensus. Fixes bug + 23091; bugfix on tor-0.2.0.19-alpha. diff --git a/src/or/main.c b/src/or/main.c index dc23184961..670d67cda1 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -1713,7 +1713,7 @@ check_expired_networkstatus_callback(time_t now, const or_options_t *options) * networkstatus_get_reasonably_live_consensus(), but that value is way * way too high. Arma: is the bridge issue there resolved yet? -NM */ #define NS_EXPIRY_SLOP (24*60*60) - if (ns && ns->valid_until < now+NS_EXPIRY_SLOP && + if (ns && ns->valid_until < (now - NS_EXPIRY_SLOP) && router_have_minimum_dir_info()) { router_dir_info_changed(); }