From: teor (Tim Wilson-Brown) Date: Mon, 9 May 2016 18:29:07 +0000 (-0400) Subject: Allow directories in small networks to bootstrap X-Git-Tag: tor-0.2.8.3-alpha~27^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c2817774c28a40f76890b68775097596d14e035e;p=thirdparty%2Ftor.git 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. --- diff --git a/changes/bug19003 b/changes/bug19003 new file mode 100644 index 0000000000..d9ef23d24c --- /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 68bcf1326e..dd8421094d 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(); }