[or-cvs] r12479: Don't reevaluate all the information from our consensus docu (in tor/trunk: . src/or)

arma at seul.org arma at seul.org
Sun Nov 11 17:38:00 UTC 2007


Author: arma
Date: 2007-11-11 12:37:59 -0500 (Sun, 11 Nov 2007)
New Revision: 12479

Modified:
   tor/trunk/ChangeLog
   tor/trunk/src/or/directory.c
   tor/trunk/src/or/networkstatus.c
   tor/trunk/src/or/or.h
   tor/trunk/src/or/routerlist.c
Log:
Don't reevaluate all the information from our consensus document
just because we've downloaded a v2 networkstatus that we intend
to cache. Fixes bug 545.


Modified: tor/trunk/ChangeLog
===================================================================
--- tor/trunk/ChangeLog	2007-11-11 17:20:30 UTC (rev 12478)
+++ tor/trunk/ChangeLog	2007-11-11 17:37:59 UTC (rev 12479)
@@ -10,16 +10,21 @@
     - Fix a memory leak on exit relays; we were leaking a cached_resolve_t
       on every successful resolve. Reported by Mike Perry.
 
-  o Minor features:
-    - Allow people to say PreferTunnelledDirConns rather than
-      PreferTunneledDirConns, for those alternate-spellers out there.
-
   o Packaging fixes on 0.2.0.10-alpha:
     - We were including instructions about what to do with the
       src/config/fallback-consensus file, but we weren't actually
       including it in the tarball. Disable all of that for now.
 
+  o Minor features:
+    - Allow people to say PreferTunnelledDirConns rather than
+      PreferTunneledDirConns, for those alternate-spellers out there.
 
+  o Minor bugfixes:
+    - Don't reevaluate all the information from our consensus document
+      just because we've downloaded a v2 networkstatus that we intend
+      to cache. Fixes bug 545.
+
+
 Changes in version 0.2.0.10-alpha - 2007-11-10
   o New directory authorities:
     - Set up ides (run by Mike Perry) as the third v3 directory authority.

Modified: tor/trunk/src/or/directory.c
===================================================================
--- tor/trunk/src/or/directory.c	2007-11-11 17:20:30 UTC (rev 12478)
+++ tor/trunk/src/or/directory.c	2007-11-11 17:37:59 UTC (rev 12479)
@@ -1448,7 +1448,8 @@
       } else
         break;
     }
-    routers_update_all_from_networkstatus(now); /*launches router downloads*/
+    /* launches router downloads as needed */
+    routers_update_all_from_networkstatus(now, 2);
     directory_info_has_arrived(now, 0);
     if (which) {
       if (smartlist_len(which)) {
@@ -1482,7 +1483,8 @@
       networkstatus_consensus_download_failed(0);
       return -1;
     }
-    routers_update_all_from_networkstatus(now); /*launches router downloads*/
+    /* launches router downloads as needed */
+    routers_update_all_from_networkstatus(now, 3);
     directory_info_has_arrived(now, 0);
     log_info(LD_DIR, "Successfully loaded consensus.");
   }

Modified: tor/trunk/src/or/networkstatus.c
===================================================================
--- tor/trunk/src/or/networkstatus.c	2007-11-11 17:20:30 UTC (rev 12478)
+++ tor/trunk/src/or/networkstatus.c	2007-11-11 17:37:59 UTC (rev 12479)
@@ -148,7 +148,7 @@
   SMARTLIST_FOREACH(entries, char *, fn, tor_free(fn));
   smartlist_free(entries);
   networkstatus_v2_list_clean(time(NULL));
-  routers_update_all_from_networkstatus(time(NULL));
+  routers_update_all_from_networkstatus(time(NULL), 2);
   return 0;
 }
 
@@ -202,7 +202,7 @@
     }
   }
 
-  routers_update_all_from_networkstatus(time(NULL));
+  routers_update_all_from_networkstatus(time(NULL), 3);
 
   return 0;
 }
@@ -1398,10 +1398,11 @@
 
 /** If the network-status list has changed since the last time we called this
  * function, update the status of every routerinfo from the network-status
- * list.
+ * list. If <b>dir_version</b> is 2, it's a v2 networkstatus that changed.
+ * If <b>dir_version</b> is 3, it's a v3 consensus that changed.
  */
 void
-routers_update_all_from_networkstatus(time_t now)
+routers_update_all_from_networkstatus(time_t now, int dir_version)
 {
   routerinfo_t *me;
   routerlist_t *rl = router_get_routerlist();
@@ -1410,7 +1411,7 @@
   if (networkstatus_v2_list_has_changed)
     download_status_map_update_from_v2_networkstatus();
 
-  if (!consensus)
+  if (!consensus || dir_version < 3) /* nothing more we should do */
     return;
 
   /* More routers may be up or down now: we need to recalc whether there's

Modified: tor/trunk/src/or/or.h
===================================================================
--- tor/trunk/src/or/or.h	2007-11-11 17:20:30 UTC (rev 12478)
+++ tor/trunk/src/or/or.h	2007-11-11 17:37:59 UTC (rev 12479)
@@ -3268,7 +3268,7 @@
 int networkstatus_set_current_consensus(const char *consensus, int from_cache,
                                         int was_waiting_for_certs);
 void networkstatus_note_certs_arrived(void);
-void routers_update_all_from_networkstatus(time_t now);
+void routers_update_all_from_networkstatus(time_t now, dir_version);
 void routerstatus_list_update_from_consensus_networkstatus(time_t now);
 void routers_update_status_from_consensus_networkstatus(smartlist_t *routers,
                                                         int reset_failures);

Modified: tor/trunk/src/or/routerlist.c
===================================================================
--- tor/trunk/src/or/routerlist.c	2007-11-11 17:20:30 UTC (rev 12478)
+++ tor/trunk/src/or/routerlist.c	2007-11-11 17:37:59 UTC (rev 12479)
@@ -3986,10 +3986,10 @@
 
   if (!consensus) {
     if (!networkstatus_get_latest_consensus())
-      strlcpy(dir_info_status, "We have no network-status document.",
+      strlcpy(dir_info_status, "We have no network-status consensus.",
               sizeof(dir_info_status));
     else
-      strlcpy(dir_info_status, "We have no recent network-status document.",
+      strlcpy(dir_info_status, "We have no recent network-status consensus.",
               sizeof(dir_info_status));
     res = 0;
     goto done;



More information about the tor-commits mailing list