]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Issues with router_get_by_nickname()
authorRobert Hogan <robert@roberthogan.net>
Sun, 17 Oct 2010 11:27:57 +0000 (12:27 +0100)
committerRobert Hogan <robert@roberthogan.net>
Sun, 17 Oct 2010 11:27:57 +0000 (12:27 +0100)
https://trac.torproject.org/projects/tor/ticket/1859

Use router_get_by_digest() instead of router_get_by_hexdigest()
in circuit_discard_optional_exit_enclaves() and
rend_client_get_random_intro(), per Nick's comments.

Using router_get_by_digest() in rend_client_get_random_intro() will
break hidden services published by Tor versions pre 0.1.2.18 and
0.2.07-alpha as they only publish by nickname. This is acceptable
however as these versions only publish to authority tor26 and
don't work for versions in the 0.2.2.x series anyway.

src/or/connection_edge.c
src/or/rendclient.c

index 15b0610d535b6088f2085a3c27e2b7fdc81851db..ab2c9087ad5099d4b97a7e8abc2ece46d8bde3d0 100644 (file)
@@ -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_hexdigest(info->identity_digest);
+    r2 = router_get_by_digest(info->identity_digest);
     if (!r1 || !r2 || r1 != r2)
       continue;
     tor_assert(edge_conn->socks_request);
index 6ff7f1896648f27363e95ef72b55f175bf3bcbee..cc1c2733a81d621480a9a823fbc27444c6f1087f 100644 (file)
@@ -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_hexdigest(intro->extend_info->identity_digest);
+    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);