[tor-commits] [tor/release-0.2.8] Allow directories in small networks to bootstrap

nickm at torproject.org nickm at torproject.org
Thu May 12 19:35:50 UTC 2016


commit c2817774c28a40f76890b68775097596d14e035e
Author: teor (Tim Wilson-Brown) <teor2345 at gmail.com>
Date:   Mon May 9 14:29:07 2016 -0400

    Allow directories in small networks to bootstrap
    
    Skip DirPort checks when the consensus has no exits.
    
    Resolves #19003, bugfix on #18050 in 0.2.8.1-alpha.
---
 changes/bug19003 | 5 +++++
 src/or/router.c  | 8 ++++++++
 2 files changed, 13 insertions(+)

diff --git a/changes/bug19003 b/changes/bug19003
new file mode 100644
index 0000000..d9ef23d
--- /dev/null
+++ b/changes/bug19003
@@ -0,0 +1,5 @@
+  o Minor bugfixes (small networks):
+    - Allow directories in small networks to bootstrap by
+      skipping DirPort checks when the consensus has no exits.
+      Resolves #19003, bugfix on #18050 in 0.2.8.1-alpha.
+      Patch by teor.
diff --git a/src/or/router.c b/src/or/router.c
index 68bcf13..dd84210 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -1551,6 +1551,8 @@ proxy_mode(const or_options_t *options)
  * and
  * - We believe both our ORPort and DirPort (if present) are reachable from
  *   the outside; or
+ * - We believe both our ORPort is reachable from the outside, and we can't
+ *   check our DirPort because the consensus has no exits; or
  * - We are an authoritative directory server.
  */
 static int
@@ -1568,7 +1570,13 @@ decide_if_publishable_server(void)
     return 1;
   if (!router_get_advertised_or_port(options))
     return 0;
+  /* If there are no exits in the consensus, but have enough descriptors to
+   * build internal paths, we can't possibly verify our DirPort.
+   * This only happens in small networks without exits. */
+  if (router_have_consensus_path() == CONSENSUS_PATH_INTERNAL)
+    return check_whether_orport_reachable();
 
+  /* If there are exits in the consensus, use an exit to check our DirPort. */
   return check_whether_orport_reachable() && check_whether_dirport_reachable();
 }
 





More information about the tor-commits mailing list