[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] r16907: {tor} Serve the latest v3 networkstatus consensus via the control (in tor/trunk: . doc/spec src/or)



Author: arma
Date: 2008-09-14 00:07:29 -0400 (Sun, 14 Sep 2008)
New Revision: 16907

Modified:
   tor/trunk/ChangeLog
   tor/trunk/doc/spec/control-spec.txt
   tor/trunk/src/or/control.c
   tor/trunk/src/or/directory.c
   tor/trunk/src/or/dirserv.c
Log:
Serve the latest v3 networkstatus consensus via the control
port. Use "getinfo dir/status-vote/current/consensus" to fetch it.


Modified: tor/trunk/ChangeLog
===================================================================
--- tor/trunk/ChangeLog	2008-09-14 03:36:54 UTC (rev 16906)
+++ tor/trunk/ChangeLog	2008-09-14 04:07:29 UTC (rev 16907)
@@ -33,7 +33,9 @@
     - Use a lockfile to make sure that two Tor processes are not
       simultaneously running with the same datadir.
     - Directory mirrors store and serve v2 hidden service descriptors by
-      default (new default value for HidServDirectoryV2 is 1).
+      default (i.e. new default value for HidServDirectoryV2 is 1).
+    - Serve the latest v3 networkstatus consensus via the control
+      port. Use "getinfo dir/status-vote/current/consensus" to fetch it.
 
   o Code simplifications and refactoring:
     - Revise the connection_new functions so that a more typesafe variant

Modified: tor/trunk/doc/spec/control-spec.txt
===================================================================
--- tor/trunk/doc/spec/control-spec.txt	2008-09-14 03:36:54 UTC (rev 16906)
+++ tor/trunk/doc/spec/control-spec.txt	2008-09-14 04:07:29 UTC (rev 16907)
@@ -531,6 +531,7 @@
     "next-circuit/IP:port"
       XXX todo.
 
+    "dir/status-vote/current/consensus" [added in Tor 0.2.1.6-alpha]
     "dir/status/authority"
     "dir/status/fp/<F>"
     "dir/status/fp/<F1>+<F2>+<F3>"

Modified: tor/trunk/src/or/control.c
===================================================================
--- tor/trunk/src/or/control.c	2008-09-14 03:36:54 UTC (rev 16906)
+++ tor/trunk/src/or/control.c	2008-09-14 04:07:29 UTC (rev 16907)
@@ -1401,7 +1401,7 @@
  * <b>ei</b> into the resulting string.  The thing you get back won't
  * necessarily have a valid signature.
  *
- * New code should never use this; it's for backward compatibiliy.
+ * New code should never use this; it's for backward compatibility.
  *
  * NOTE: <b>ri_body</b> is as returned by signed_descriptor_get_body: it might
  * not be NUL-terminated. */
@@ -1572,7 +1572,18 @@
       SMARTLIST_FOREACH(status_list, char *, s, tor_free(s));
       smartlist_free(status_list);
     }
-  } else if (!strcmp(question, "network-status")) {
+  } else if (!strcmp(question, "dir/status-vote/current/consensus")) { /* v3 */
+    if (directory_caches_dir_info(get_options())) {
+      const cached_dir_t *consensus = dirserv_get_consensus();
+      if (consensus)
+        *answer = tor_strdup(consensus->dir);
+    }
+    if (!*answer) { /* try loading it from disk */
+      char *filename = get_datadir_fname("cached-consensus");
+      *answer = read_file_to_str(filename, RFTS_IGNORE_MISSING, NULL);
+      tor_free(filename);
+    }
+  } else if (!strcmp(question, "network-status")) { /* v1 */
     routerlist_t *routerlist = router_get_routerlist();
     int verbose = control_conn->use_long_names;
     if (!routerlist || !routerlist->routers ||
@@ -1920,7 +1931,10 @@
   ITEM("dir-usage", misc, "Breakdown of bytes transferred over DirPort."),
   PREFIX("desc-annotations/id/", dir, "Router annotations by hexdigest."),
   PREFIX("dir/server/", dir,"Router descriptors as retrieved from a DirPort."),
-  PREFIX("dir/status/", dir,"Networkstatus docs as retrieved from a DirPort."),
+  PREFIX("dir/status/", dir,
+         "v2 networkstatus docs as retrieved from a DirPort."),
+  ITEM("dir/status-vote/current/consensus", dir,
+       "v3 Networkstatus consensus as retrieved from a DirPort."),
   PREFIX("exit-policy/default", policies,
          "The default value appended to the configured exit policy."),
   PREFIX("ip-to-country/", geoip, "Perform a GEOIP lookup"),

Modified: tor/trunk/src/or/directory.c
===================================================================
--- tor/trunk/src/or/directory.c	2008-09-14 03:36:54 UTC (rev 16906)
+++ tor/trunk/src/or/directory.c	2008-09-14 04:07:29 UTC (rev 16907)
@@ -2408,7 +2408,7 @@
     url_len -= 2;
   }
 
-  if (!strcmp(url,"/tor/") || !strcmp(url,"/tor/dir")) { /* dir fetch */
+  if (!strcmp(url,"/tor/") || !strcmp(url,"/tor/dir")) { /* v1 dir fetch */
     cached_dir_t *d = dirserv_get_directory();
 
     if (!d) {

Modified: tor/trunk/src/or/dirserv.c
===================================================================
--- tor/trunk/src/or/dirserv.c	2008-09-14 03:36:54 UTC (rev 16906)
+++ tor/trunk/src/or/dirserv.c	2008-09-14 04:07:29 UTC (rev 16907)
@@ -1300,7 +1300,7 @@
   cached_dir_decref(d);
 }
 
-/** If we have no cached directory, or it is older than <b>published</b>,
+/** If we have no cached v1 directory, or it is older than <b>published</b>,
  * then replace it with <b>directory</b>, published at <b>published</b>.
  *
  * If <b>published</b> is too old, do nothing.