From a6cb07bd9e332205d55010c8386746096f78fc91 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Wed, 16 May 2012 11:18:21 -0400 Subject: [PATCH 1/2] Correct documentation for remove_obsolete_entry_guards. --- src/or/circuitbuild.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 3b82ed7455..19be77e5d5 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -3737,7 +3737,9 @@ entry_guard_free(entry_guard_t *e) /** Remove any entry guard which was selected by an unknown version of Tor, * or which was selected by a version of Tor that's known to select - * entry guards badly. */ + * entry guards badly, or which was selected more 2 months ago. */ +/* XXXX The "obsolete guards" and "chosen long ago guards" things should + * probably be different functions. */ static int remove_obsolete_entry_guards(time_t now) { From f89de0a79fe02727d40a051eba0e96f7324e68ab Mon Sep 17 00:00:00 2001 From: Roger Dingledine Date: Wed, 16 May 2012 11:28:36 -0400 Subject: [PATCH 2/2] Remove over-two-months-old entry guards even while running. Previously, we only did this check at startup, which could lead to us holding a guard indefinitely, and give weird results. Fixes bug 5380; bugfix on 0.2.1.14-rc. (Patch by Roger; changes file and commit message by Nick) --- changes/bug5380 | 5 +++++ src/or/circuitbuild.c | 2 ++ 2 files changed, 7 insertions(+) create mode 100644 changes/bug5380 diff --git a/changes/bug5380 b/changes/bug5380 new file mode 100644 index 0000000000..4bb17bc940 --- /dev/null +++ b/changes/bug5380 @@ -0,0 +1,5 @@ + o Minor bugfixes: + - Check our entry guards for having been picked too long ago when + we get a new consensus. (Previously, we only did this check at + startup, which could lead to us holding a guard indefinitely, + and give weird results.) Fixes bug 5380; bugfix on 0.2.1.14-rc. diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 19be77e5d5..403f65f284 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -3868,6 +3868,8 @@ entry_guards_compute_status(const or_options_t *options, time_t now) if (remove_dead_entry_guards(now)) changed = 1; + if (remove_obsolete_entry_guards(now)) + changed = 1; if (changed) { SMARTLIST_FOREACH_BEGIN(entry_guards, entry_guard_t *, entry) {