From ce7fcd110ca0a7acb2d8473fddb51ae42a9aeae0 Mon Sep 17 00:00:00 2001
From: Roger Dingledine <arma@torproject.org>
Date: Wed, 21 Jul 2004 18:53:56 +0000
Subject: [PATCH] solve the authdirserver initialization precedence problem

svn:r2085
---
 src/or/main.c       | 14 +++++++-------
 src/or/router.c     |  3 +--
 src/or/routerlist.c |  1 +
 3 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/or/main.c b/src/or/main.c
index b3898fff39..759487c0ae 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -763,6 +763,13 @@ static int do_main_loop(void) {
   /* Intialize the service cache. */
   rend_cache_init();
 
+  /* load the private keys, if we're supposed to have them, and set up the
+   * TLS context. */
+  if (init_keys() < 0 || rend_service_load_keys() < 0) {
+    log_fn(LOG_ERR,"Error initializing keys; exiting");
+    return -1;
+  }
+
   /* load the routers file */
   if(options.RouterFile) {
     routerlist_clear_trusted_directories();
@@ -772,13 +779,6 @@ static int do_main_loop(void) {
     }
   }
 
-  /* load the private keys, if we're supposed to have them, and set up the
-   * TLS context. */
-  if (init_keys() < 0 || rend_service_load_keys() < 0) {
-    log_fn(LOG_ERR,"Error initializing keys; exiting");
-    return -1;
-  }
-
   if(authdir_mode()) {
     /* the directory is already here, run startup things */
     directory_has_arrived();
diff --git a/src/or/router.c b/src/or/router.c
index c0f3cbce6d..f28778f0e3 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -509,8 +509,7 @@ int router_rebuild_descriptor(void) {
   ri->bandwidthburst = options.BandwidthBurst;
   ri->exit_policy = NULL; /* zero it out first */
   router_add_exit_policy_from_config(ri);
-  ri->is_trusted_dir = (ri->dir_port &&
-    router_digest_is_trusted_dir(ri->identity_digest));
+  ri->is_trusted_dir = authdir_mode();
   if (desc_routerinfo)
     routerinfo_free(desc_routerinfo);
   desc_routerinfo = ri;
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index 95b0a033cd..7f8e466416 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -310,6 +310,7 @@ routerinfo_t *router_get_by_nickname(const char *nickname)
   return NULL;
 }
 
+/* XXX008 currently this trusted_dir_digests stuff is not used. */
 /** Return true iff <b>digest</b> is the digest of the identity key of
  * a trusted directory. */
 int router_digest_is_trusted_dir(const char *digest) {
-- 
GitLab