Do more type checking when setting HS idents.

I repurposed the old directory_request_set_hs_ident() into a new
directory_request_upload_set_hs_ident() which is only used for the
upload purpose and so it can assert on the dir_purpose.

When coding the client-side we can make a second function for fetch.
This commit is contained in:
George Kadianakis 2017-08-05 00:33:34 +03:00 committed by Nick Mathewson
parent fe0c40c9b3
commit 0bf8587858
3 changed files with 6 additions and 7 deletions

View File

@ -1281,12 +1281,11 @@ directory_request_set_rend_query(directory_request_t *req,
* <b>ident</b> object must outlive the request.
*/
void
directory_request_set_hs_ident(directory_request_t *req,
const hs_ident_dir_conn_t *ident)
directory_request_upload_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->dir_purpose == DIR_PURPOSE_UPLOAD_HSDESC);
tor_assert(req->dir_purpose == DIR_PURPOSE_UPLOAD_HSDESC);
}
req->hs_ident = ident;
}

View File

@ -73,8 +73,8 @@ void directory_request_set_if_modified_since(directory_request_t *req,
time_t if_modified_since);
void directory_request_set_rend_query(directory_request_t *req,
const rend_data_t *query);
void directory_request_set_hs_ident(directory_request_t *req,
const hs_ident_dir_conn_t *ident);
void directory_request_upload_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

@ -1957,7 +1957,7 @@ upload_descriptor_to_hsdir(const hs_service_t *service,
strlen(encoded_desc));
/* The ident object is copied over the directory connection object once
* the directory request is initiated. */
directory_request_set_hs_ident(dir_req, &ident);
directory_request_upload_set_hs_ident(dir_req, &ident);
/* Initiate the directory request to the hsdir.*/
directory_initiate_request(dir_req);