Browse Source

Fix dirserv_get_networkstatus_v2's api: its function comments
did not at all match its behavior, and I can't think of a case
when it should return anything other than 0.

This fix may allow getinfo dir/status/foo to work.


svn:r6285

Roger Dingledine 19 years ago
parent
commit
6fb27741ba
4 changed files with 7 additions and 17 deletions
  1. 2 5
      src/or/control.c
  2. 1 4
      src/or/directory.c
  3. 3 7
      src/or/dirserv.c
  4. 1 1
      src/or/or.h

+ 2 - 5
src/or/control.c

@@ -1509,11 +1509,8 @@ handle_getinfo_helper(const char *question, char **answer)
     if (!get_options()->DirPort)
       return 0;
     status_list = smartlist_create();
-    if (!dirserv_get_networkstatus_v2(status_list,
-                                      question+strlen("dir/status/"))) {
-      smartlist_free(status_list);
-      return 0;
-    }
+    dirserv_get_networkstatus_v2(status_list,
+                                 question+strlen("dir/status/"));
     len = 0;
     SMARTLIST_FOREACH(status_list, cached_dir_t *, d, len += d->dir_len);
     cp = *answer = tor_malloc(len+1);

+ 1 - 4
src/or/directory.c

@@ -1430,10 +1430,7 @@ directory_handle_command_get(connection_t *conn, char *headers,
     const char *key = url + strlen("/tor/status/");
     if (deflated)
       url[url_len-2] = '\0';
-    if (dirserv_get_networkstatus_v2(dir_objs, key)) {
-      smartlist_free(dir_objs);
-      return 0;
-    }
+    dirserv_get_networkstatus_v2(dir_objs, key);
     if (!strcmpstart(key, "fp/"))
       request_type = deflated?"/tor/status/fp.z":"/tor/status/fp";
     else if (!strcmpstart(key, "authority"))

+ 3 - 7
src/or/dirserv.c

@@ -1454,12 +1454,9 @@ generate_v2_networkstatus(void)
 /** Look for a network status object as specified by <b>key</b>, which should
  * be either "authority" (to find a network status generated by us), a hex
  * identity digest (to find a network status generated by given directory), or
- * "all" (to return all the v2 network status objects we have, concatenated).
- * If <b>compress</b>, find the version compressed with zlib.  Return 0 if
- * nothing was found; otherwise set *<b>directory</b> to the matching network
- * status and return its length.
+ * "all" (to return all the v2 network status objects we have).
  */
-int
+void
 dirserv_get_networkstatus_v2(smartlist_t *result,
                              const char *key)
 {
@@ -1468,7 +1465,7 @@ dirserv_get_networkstatus_v2(smartlist_t *result,
   if (!cached_v2_networkstatus)
     cached_v2_networkstatus = digestmap_new();
 
-  if (!(strcmp(key,"authority"))) {
+  if (!strcmp(key,"authority")) {
     if (get_options()->AuthoritativeDir) {
       cached_dir_t *d =
         dirserv_pick_cached_dir_obj(NULL,
@@ -1518,7 +1515,6 @@ dirserv_get_networkstatus_v2(smartlist_t *result,
         });
     smartlist_free(digests);
   }
-  return 0;
 }
 
 /** Add a signed_descriptor_t to <b>descs_out</b> for each router matching

+ 1 - 1
src/or/or.h

@@ -1924,7 +1924,7 @@ void dirserv_set_cached_directory(const char *directory, time_t when,
 void dirserv_set_cached_networkstatus_v2(const char *directory,
                                          const char *identity,
                                          time_t published);
-int dirserv_get_networkstatus_v2(smartlist_t *result, const char *key);
+void dirserv_get_networkstatus_v2(smartlist_t *result, const char *key);
 int dirserv_get_routerdescs(smartlist_t *descs_out, const char *key,
                             const char **msg);
 void dirserv_orconn_tls_done(const char *address,