From: Roger Dingledine Date: Fri, 18 Jan 2008 04:42:22 +0000 (+0000) Subject: Avoid going directly to the directory authorities even if you're a X-Git-Tag: tor-0.2.0.18-alpha~55 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=06047bcec9bab8ec2af9dcdd0b3277d36680f9d8;p=thirdparty%2Ftor.git 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 --- diff --git a/ChangeLog b/ChangeLog index 185e6db85f..f137213169 100644 --- a/ChangeLog +++ b/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. diff --git a/src/or/dirserv.c b/src/or/dirserv.c index ab0d17d7a9..e66cb2aa5b 100644 --- a/src/or/dirserv.c +++ b/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; }