[tor-commits] [tor/release-0.2.8] refactor the #19003 patches

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


commit b8b5bccfd9f350cd796a8bcd6b79b9d303a79e11
Author: Roger Dingledine <arma at torproject.org>
Date:   Wed May 11 13:03:49 2016 -0400

    refactor the #19003 patches
    
    fix the logic in one of the comments
---
 src/or/circuituse.c |  2 +-
 src/or/router.c     | 21 +++++++++++----------
 2 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/src/or/circuituse.c b/src/or/circuituse.c
index fa6c666..a4b5801 100644
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@ -1677,7 +1677,7 @@ circuit_launch(uint8_t purpose, int flags)
 /* Do we have enough descriptors to build paths?
  * If need_exit is true, return 1 if we can build exit paths.
  * (We need at least one Exit in the consensus to build exit paths.)
- * If need_exit is false, return 0 if we can build internal paths.
+ * If need_exit is false, return 1 if we can build internal paths.
  */
 static int
 have_enough_path_info(int need_exit)
diff --git a/src/or/router.c b/src/or/router.c
index dd84210..3f94703 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -1549,9 +1549,9 @@ proxy_mode(const or_options_t *options)
  * and
  * - We have ORPort set
  * and
- * - We believe both our ORPort and DirPort (if present) are reachable from
+ * - We believe 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
+ * - We believe 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.
  */
@@ -1570,14 +1570,15 @@ 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();
+  if (!check_whether_orport_reachable())
+    return 0;
+  if (router_have_consensus_path() == CONSENSUS_PATH_INTERNAL) {
+    /* All set: there are no exits in the consensus (maybe this is a tiny
+     * test network), so we can't check our DirPort reachability. */
+    return 1;
+  } else {
+    return check_whether_dirport_reachable();
+  }
 }
 
 /** Initiate server descriptor upload as reasonable (if server is publishable,





More information about the tor-commits mailing list