Commit 903183ea authored by Roger Dingledine's avatar Roger Dingledine
Browse files

if we as a directory mirror don't know of any v1 directory

authorities, then don't try to cache any v1 directories.


svn:r6162
parent a4ec5552
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -826,6 +826,7 @@ run_scheduled_events(time_t now)
    if (options->DirPort && !options->V1AuthoritativeDir) {
      /* XXX actually, we should only do this if we want to advertise
       * our dirport. not simply if we configured one. -RD */
      if (any_trusted_dir_supports_v1())
        directory_get_from_dirserver(DIR_PURPOSE_FETCH_DIR, NULL, 1);
    }

+1 −0
Original line number Diff line number Diff line
@@ -2341,6 +2341,7 @@ void add_trusted_dir_server(const char *nickname,
                            const char *address, uint16_t port,
                            const char *digest, int supports_v1);
void clear_trusted_dir_servers(void);
int any_trusted_dir_supports_v1(void);
networkstatus_t *networkstatus_get_by_digest(const char *digest);
local_routerstatus_t *router_get_combined_status_by_digest(const char *digest);
void update_networkstatus_downloads(time_t now);
+11 −0
Original line number Diff line number Diff line
@@ -2678,6 +2678,17 @@ clear_trusted_dir_servers(void)
  }
}

/** Return 1 if any trusted dir server supports v1 directories,
 * else return 0. */
int
any_trusted_dir_supports_v1(void)
{
  if (trusted_dir_servers)
    SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, ent,
                      if (ent->is_v1_authority) return 1);
  return 0;
}

/** Return the network status with a given identity digest. */
networkstatus_t *
networkstatus_get_by_digest(const char *digest)