Browse Source

prop224: Add directory_request_fetch_set_hs_ident()

Needed by the client when fetching a descriptor. This function checks the
directory purpose and hard assert if it is not for fetching.

Signed-off-by: David Goulet <dgoulet@torproject.org>
David Goulet 6 years ago
parent
commit
31da3898e7
3 changed files with 17 additions and 1 deletions
  1. 14 0
      src/or/directory.c
  2. 2 0
      src/or/directory.h
  3. 1 1
      src/or/hs_client.c

+ 14 - 0
src/or/directory.c

@@ -1292,6 +1292,20 @@ directory_request_upload_set_hs_ident(directory_request_t *req,
   }
   req->hs_ident = ident;
 }
+/**
+ * Set an object containing HS connection identifier to be associated with
+ * this fetch request. Note that only an alias to <b>ident</b> is stored, so
+ * the <b>ident</b> object must outlive the request.
+ */
+void
+directory_request_fetch_set_hs_ident(directory_request_t *req,
+                                     const hs_ident_dir_conn_t *ident)
+{
+  if (ident) {
+    tor_assert(req->dir_purpose == DIR_PURPOSE_FETCH_HSDESC);
+  }
+  req->hs_ident = ident;
+}
 /** Set a static circuit_guard_state_t object to affliate with the request in
  * <b>req</b>.  This object will receive notification when the attempt to
  * connect to the guard either succeeds or fails. */

+ 2 - 0
src/or/directory.h

@@ -75,6 +75,8 @@ void directory_request_set_rend_query(directory_request_t *req,
                                       const rend_data_t *query);
 void directory_request_upload_set_hs_ident(directory_request_t *req,
                                            const hs_ident_dir_conn_t *ident);
+void directory_request_fetch_set_hs_ident(directory_request_t *req,
+                                          const hs_ident_dir_conn_t *ident);
 
 void directory_request_set_routerstatus(directory_request_t *req,
                                         const routerstatus_t *rs);

+ 1 - 1
src/or/hs_client.c

@@ -102,7 +102,7 @@ directory_launch_v3_desc_fetch(const ed25519_public_key_t *onion_identity_pk,
   directory_request_set_routerstatus(req, hsdir);
   directory_request_set_indirection(req, DIRIND_ANONYMOUS);
   directory_request_set_resource(req, base64_blinded_pubkey);
-  directory_request_upload_set_hs_ident(req, &hs_conn_dir_ident);
+  directory_request_fetch_set_hs_ident(req, &hs_conn_dir_ident);
   directory_initiate_request(req);
   directory_request_free(req);