diff options
author | Nick Mathewson <nickm@torproject.org> | 2010-10-21 11:01:12 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2010-10-21 11:01:12 -0400 |
commit | 0e8d1c22177fa10b7f5fd6214d6b3c7e5eeaafac (patch) | |
tree | 0bb172119c9107999df60759e386e9a37befa16c | |
parent | ea7f4be6d271639bff0731108751a0b20c0b860e (diff) | |
parent | 69a496ba9810f5065f55af558932e84152ce50bc (diff) | |
download | tor-0e8d1c22177fa10b7f5fd6214d6b3c7e5eeaafac.tar.gz tor-0e8d1c22177fa10b7f5fd6214d6b3c7e5eeaafac.zip |
Merge remote branch 'hoganrobert/bug1859' into maint-0.2.2
-rw-r--r-- | changes/bug1859 | 9 | ||||
-rw-r--r-- | src/or/connection_edge.c | 2 | ||||
-rw-r--r-- | src/or/rendclient.c | 2 | ||||
-rw-r--r-- | src/or/routerlist.c | 3 |
4 files changed, 11 insertions, 5 deletions
diff --git a/changes/bug1859 b/changes/bug1859 new file mode 100644 index 0000000000..5b139f357c --- /dev/null +++ b/changes/bug1859 @@ -0,0 +1,9 @@ + o Minor bugfixes: + - Bring the logic that gathers routerinfos and assesses the + acceptability of circuits into line. This prevents a Tor OP from getting + locked in a cycle of choosing its local OR as an exit for a path (due to + a .exit request) and then rejecting the circuit because its OR is not + listed yet. Also prevent Tor clients from using an OR running in the same + instance as an exit (due to a .exit request) if the OR does not meet the + same requirements expected of an OR running elsewhere. + Fixes bug 1859; bugfix on 0.2.0-alpha. diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index da0fc1856c..0970cda4b9 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -600,7 +600,7 @@ circuit_discard_optional_exit_enclaves(extend_info_t *info) !edge_conn->chosen_exit_retries) continue; r1 = router_get_by_nickname(edge_conn->chosen_exit_name, 0); - r2 = router_get_by_nickname(info->nickname, 0); + r2 = router_get_by_digest(info->identity_digest); if (!r1 || !r2 || r1 != r2) continue; tor_assert(edge_conn->socks_request); diff --git a/src/or/rendclient.c b/src/or/rendclient.c index 68abb886a8..cc1c2733a8 100644 --- a/src/or/rendclient.c +++ b/src/or/rendclient.c @@ -755,7 +755,7 @@ rend_client_get_random_intro(const rend_data_t *rend_query) intro = smartlist_get(entry->parsed->intro_nodes, i); /* Do we need to look up the router or is the extend info complete? */ if (!intro->extend_info->onion_key) { - router = router_get_by_nickname(intro->extend_info->nickname, 0); + router = router_get_by_digest(intro->extend_info->identity_digest); if (!router) { log_info(LD_REND, "Unknown router with nickname '%s'; trying another.", intro->extend_info->nickname); diff --git a/src/or/routerlist.c b/src/or/routerlist.c index e52165ed84..8ed9a7f5e6 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -2273,9 +2273,6 @@ router_get_by_nickname(const char *nickname, int warn_if_unnamed) return router_get_by_hexdigest(nickname); if (!strcasecmp(nickname, UNNAMED_ROUTER_NICKNAME)) return NULL; - if (server_mode(get_options()) && - !strcasecmp(nickname, get_options()->Nickname)) - return router_get_my_routerinfo(); maybedigest = (strlen(nickname) >= HEX_DIGEST_LEN) && (base16_decode(digest,DIGEST_LEN,nickname,HEX_DIGEST_LEN) == 0); |