Commit b8b5bccf authored by Roger Dingledine's avatar Roger Dingledine
Browse files

refactor the #19003 patches

fix the logic in one of the comments
parent c2817774
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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)
+11 −10
Original line number Diff line number Diff line
@@ -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,