summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2009-04-11 19:40:42 +0000
committerRoger Dingledine <arma@torproject.org>2009-04-11 19:40:42 +0000
commitc024928b63ac41d722d5dd8b8ef7a305ca10fae2 (patch)
treec6ee7ed58ae874d0cc5b98e846cdc6dcb20f81af
parent419d158c74789c82ed3e8d3ef419b177a9ab6d4f (diff)
downloadtor-c024928b63ac41d722d5dd8b8ef7a305ca10fae2.tar.gz
tor-c024928b63ac41d722d5dd8b8ef7a305ca10fae2.zip
For belt-and-suspenders, relays that don't set Address in their config
now avoid using begin_dir for all direct connections. svn:r19296
-rw-r--r--ChangeLog11
-rw-r--r--src/or/directory.c3
2 files changed, 8 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index dc583de5f2..a2e2ff66aa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,11 +7,12 @@ Changes in version 0.2.1.14-rc - 2009-04-11
o Major bugfixes (on 0.2.0):
- Finally fix the bug where dynamic-IP relays disappear when their
- IP address changes: directory mirrors were mistakenly telling them
- their old address if they asked via begin_dir, so they never got
- an accurate answer about their new address, so they just vanished
- after a day. Should fix bugs 827, 883, and 900 -- but alas, only
- after every directory mirror has upgraded.
+ IP address changes: directory mirrors were mistakenly telling
+ them their old address if they asked via begin_dir, so they
+ never got an accurate answer about their new address, so they
+ just vanished after a day. For belt-and-suspenders, relays that
+ don't set Address in their config now avoid using begin_dir for
+ all direct connections. Should fix bugs 827, 883, and 900.
- Relays were falling out of the networkstatus consensus for
part of a day if they changed their local config but the
authorities discarded their new descriptor as "not sufficiently
diff --git a/src/or/directory.c b/src/or/directory.c
index 8117dc5f0e..c72061a9f9 100644
--- a/src/or/directory.c
+++ b/src/or/directory.c
@@ -681,7 +681,8 @@ directory_command_should_use_begindir(or_options_t *options,
return 0; /* We don't know an ORPort -- no chance. */
if (!anonymized_connection)
if (!fascist_firewall_allows_address_or(addr, or_port) ||
- directory_fetches_from_authorities(options))
+ directory_fetches_from_authorities(options) ||
+ (server_mode(options) && !options->Address))
return 0; /* We're firewalled or are acting like a relay -- also no. */
if (!options->TunnelDirConns &&
router_purpose != ROUTER_PURPOSE_BRIDGE)