Browse Source

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)
Roger Dingledine 12 years ago
parent
commit
f89de0a79f
2 changed files with 7 additions and 0 deletions
  1. 5 0
      changes/bug5380
  2. 2 0
      src/or/circuitbuild.c

+ 5 - 0
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.

+ 2 - 0
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) {