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>
This commit is contained in:
David Goulet 2017-08-09 11:45:29 -04:00
parent a64ef7d6c5
commit 31da3898e7
3 changed files with 17 additions and 1 deletions

View File

@ -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. */

View File

@ -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);

View File

@ -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);