Browse Source

Discard router descriptors as we load them if they are more than
five days old. Otherwise if Tor is off for a long time and then
starts with cached descriptors, it will try to use the onion
keys in those obsolete descriptors when building circuits. Bugfix
on 0.2.0.x. Fixes bug 887.


svn:r17993

Roger Dingledine 15 years ago
parent
commit
c123163043
2 changed files with 13 additions and 0 deletions
  1. 7 0
      ChangeLog
  2. 6 0
      src/or/routerlist.c

+ 7 - 0
ChangeLog

@@ -1,4 +1,11 @@
 Changes in version 0.2.1.11-alpha - 2009-01-??
+  o Major bugfixes:
+    - Discard router descriptors as we load them if they are more than
+      five days old. Otherwise if Tor is off for a long time and then
+      starts with cached descriptors, it will try to use the onion
+      keys in those obsolete descriptors when building circuits. Bugfix
+      on 0.2.0.x. Fixes bug 887.
+
   o Minor bugfixes:
     - Make outbound DNS packets respect the OutboundBindAddress setting.
       Fixes the bug part of bug 798. Bugfix on 0.1.2.2-alpha.

+ 6 - 0
src/or/routerlist.c

@@ -3060,6 +3060,12 @@ router_add_to_routerlist(routerinfo_t *router, const char **msg,
     }
   }
 
+  if (!in_consensus && from_cache &&
+      router->cache_info.published_on < time(NULL) - OLD_ROUTER_DESC_MAX_AGE) {
+    *msg = "Router descriptor was really old.";
+    return ROUTER_WAS_NOT_NEW;
+  }
+
   /* We haven't seen a router with this identity before. Add it to the end of
    * the list. */
   routerlist_insert(routerlist, router);