[or-cvs] [tor/master] Restore changes from f79688d that got lost somehow during a merge.

Nick Mathewson nickm at seul.org
Fri Jun 12 15:09:21 UTC 2009


Author: Karsten Loesing <karsten.loesing at gmx.net>
Date: Fri, 12 Jun 2009 02:05:21 +0200
Subject: Restore changes from f79688d that got lost somehow during a merge.
Commit: 77f5ad6b07dcdd3271d56f5e9edde3dc56ffe411

---
 src/or/rendclient.c |   62 ++++++++++----------------------------------------
 1 files changed, 13 insertions(+), 49 deletions(-)

diff --git a/src/or/rendclient.c b/src/or/rendclient.c
index 6fe3a69..d9c0a9e 100644
--- a/src/or/rendclient.c
+++ b/src/or/rendclient.c
@@ -63,7 +63,7 @@ rend_client_send_introduction(origin_circuit_t *introcirc,
   rend_cache_entry_t *entry;
   crypt_path_t *cpath;
   off_t dh_offset;
-  crypto_pk_env_t *intro_key; /* either Bob's public key or an intro key. */
+  crypto_pk_env_t *intro_key = NULL;
 
   tor_assert(introcirc->_base.purpose == CIRCUIT_PURPOSE_C_INTRODUCING);
   tor_assert(rendcirc->_base.purpose == CIRCUIT_PURPOSE_C_REND_READY);
@@ -80,23 +80,19 @@ rend_client_send_introduction(origin_circuit_t *introcirc,
     goto err;
   }
 
-  /* first 20 bytes of payload are the hash of bob's pk */
-  if (entry->parsed->version == 0) { /* unversioned descriptor */
-    intro_key = entry->parsed->pk;
-  } else { /* versioned descriptor */
-    intro_key = NULL;
-    SMARTLIST_FOREACH(entry->parsed->intro_nodes, rend_intro_point_t *,
-                      intro, {
-      if (!memcmp(introcirc->build_state->chosen_exit->identity_digest,
-                  intro->extend_info->identity_digest, DIGEST_LEN)) {
-        intro_key = intro->intro_key;
-        break;
-      }
-    });
-    if (!intro_key) {
-      log_warn(LD_BUG, "Internal error: could not find intro key.");
-      goto err;
+  /* first 20 bytes of payload are the hash of the intro key */
+  intro_key = NULL;
+  SMARTLIST_FOREACH(entry->parsed->intro_nodes, rend_intro_point_t *,
+                    intro, {
+    if (!memcmp(introcirc->build_state->chosen_exit->identity_digest,
+                intro->extend_info->identity_digest, DIGEST_LEN)) {
+      intro_key = intro->intro_key;
+      break;
     }
+  });
+  if (!intro_key) {
+    log_warn(LD_BUG, "Internal error: could not find intro key.");
+    goto err;
   }
   if (crypto_pk_get_digest(intro_key, payload)<0) {
     log_warn(LD_BUG, "Internal error: couldn't hash public key.");
@@ -451,28 +447,6 @@ directory_get_from_hs_dir(const char *desc_id, const rend_data_t *rend_query)
   return 1;
 }
 
-/** If we are not currently fetching a rendezvous service descriptor
- * for the service ID <b>query</b>, start a directory connection to fetch a
- * new one.
- */
-static void
-rend_client_refetch_renddesc(const char *query)
-{
-  if (!get_options()->FetchHidServDescriptors)
-    return;
-  log_info(LD_REND, "Fetching rendezvous descriptor for service %s",
-           escaped_safe_str(query));
-  if (connection_get_by_type_state_rendquery(CONN_TYPE_DIR, 0, query)) {
-    log_info(LD_REND,"Would fetch a new renddesc here (for %s), but one is "
-             "already in progress.", escaped_safe_str(query));
-  } else {
-    /* not one already; initiate a dir rend desc lookup */
-    directory_get_from_dirserver(DIR_PURPOSE_FETCH_RENDDESC,
-                                 ROUTER_PURPOSE_GENERAL, query,
-                                 PDS_RETRY_IF_NO_SERVERS);
-  }
-}
-
 /** Start a connection to a hidden service directory to fetch a v2
  * rendezvous service descriptor for the base32-encoded service ID
  * <b>query</b>.
@@ -552,12 +526,7 @@ rend_client_remove_intro_point(extend_info_t *failed_intro,
   if (r==0) {
     log_info(LD_REND, "Unknown service %s. Re-fetching descriptor.",
              escaped_safe_str(rend_query->onion_address));
-    /* Fetch both, v0 and v2 rend descriptors in parallel. Use whichever
-     * arrives first. Exception: When using client authorization, only
-     * fetch v2 descriptors.*/
     rend_client_refetch_v2_renddesc(rend_query);
-    if (rend_query->auth_type == REND_NO_AUTH)
-      rend_client_refetch_renddesc(rend_query->onion_address);
     return 0;
   }
 
@@ -575,12 +544,7 @@ rend_client_remove_intro_point(extend_info_t *failed_intro,
     log_info(LD_REND,
              "No more intro points remain for %s. Re-fetching descriptor.",
              escaped_safe_str(rend_query->onion_address));
-    /* Fetch both, v0 and v2 rend descriptors in parallel. Use whichever
-     * arrives first. Exception: When using client authorization, only
-     * fetch v2 descriptors.*/
     rend_client_refetch_v2_renddesc(rend_query);
-    if (rend_query->auth_type == REND_NO_AUTH)
-      rend_client_refetch_renddesc(rend_query->onion_address);
 
     /* move all pending streams back to renddesc_wait */
     while ((conn = connection_get_by_type_state_rendquery(CONN_TYPE_AP,
-- 
1.5.6.5



More information about the tor-commits mailing list