commit 5b03c7ba6d899e19e8f3e0a58bd5df8bb7bbf1d0
parent c4c5077af2fad107c9fcebdd3a7999da7b8ee904
Author: David Goulet <dgoulet@torproject.org>
Date: Wed, 2 Aug 2017 13:20:59 -0400
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 <dgoulet@torproject.org>
Diffstat:
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/changes/bug23091 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
@@ -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();
}