Browse Source

Directory authorities should go to the proper authority when asking for a networkstatus, even when they want a compressed one. (Also, bullet-proof the logic in case we ever accidentally request a networkstatus for a non-authority.)

svn:r5740
Nick Mathewson 19 years ago
parent
commit
f0fb9f6b0c
1 changed files with 3 additions and 2 deletions
  1. 3 2
      src/or/directory.c

+ 3 - 2
src/or/directory.c

@@ -167,13 +167,14 @@ directory_get_from_dirserver(uint8_t purpose, const char *resource,
 
   if (directconn) {
     if (fetch_fresh_first && purpose == DIR_PURPOSE_FETCH_NETWORKSTATUS &&
-        !strcmpstart(resource,"fp/") && strlen(resource) == HEX_DIGEST_LEN+3) {
+        !strcmpstart(resource,"fp/") && strlen(resource) >= HEX_DIGEST_LEN+3) {
       /* Try to ask the actual dirserver its opinion. */
       char digest[DIGEST_LEN];
       trusted_dir_server_t *ds;
       base16_decode(digest, DIGEST_LEN, resource+3, HEX_DIGEST_LEN);
       ds = router_get_trusteddirserver_by_digest(digest);
-      rs = &(ds->fake_status);
+      if (ds)
+        rs = &(ds->fake_status);
     }
     if (!rs && fetch_fresh_first) {
       /* only ask authdirservers, and don't ask myself */