Browse Source

Avoid going directly to the directory authorities even if you're a
relay, if you haven't found yourself reachable yet or if you've
decided not to advertise your dirport yet. Addresses bug 556.


svn:r13172

Roger Dingledine 16 years ago
parent
commit
06047bcec9
2 changed files with 12 additions and 3 deletions
  1. 7 0
      ChangeLog
  2. 5 3
      src/or/dirserv.c

+ 7 - 0
ChangeLog

@@ -1,3 +1,10 @@
+Changes in version 0.2.0.18-alpha - 2008-01-??
+  o Major features:
+    - Avoid going directly to the directory authorities even if you're a
+      relay, if you haven't found yourself reachable yet or if you've
+      decided not to advertise your dirport yet. Addresses bug 556.
+
+
 Changes in version 0.2.0.17-alpha - 2008-01-17
   o Compile fixes:
     - Make the tor-gencert man page get included correctly in the tarball.

+ 5 - 3
src/or/dirserv.c

@@ -1116,16 +1116,18 @@ dirserv_dump_directory_to_string(char **dir_out,
 int
 directory_fetches_from_authorities(or_options_t *options)
 {
+  routerinfo_t *me;
   if (options->FetchDirInfoEarly)
     return 1;
   if (options->DirPort == 0)
     return 0;
   if (options->BridgeRelay == 1)
     return 0;
-  /* XXX if dirport not advertised, return 0 too */
-  if (!server_mode(options))
+  if (!server_mode(options) || !advertised_server_mode())
     return 0;
-  /* XXX if orport or dirport not reachable, return 0 too */
+  me = router_get_my_routerinfo();
+  if (!me || !me->dir_port)
+    return 0; /* if dirport not advertised, return 0 too */
   return 1;
 }