Merge branch 'bug16023_028_01_squashed'

This commit is contained in:
Nick Mathewson 2016-02-22 13:17:58 -05:00
commit 2240aa1269
4 changed files with 24 additions and 6 deletions

4
changes/bug16023 Normal file
View File

@ -0,0 +1,4 @@
o Minor feature (hidden service, control port)
- Add the onion address to the HS_DESC event for the UPLOADED action
both on success or failure. It was previously hardcoded with UNKNOWN.
Fixes #16023;

View File

@ -6384,6 +6384,7 @@ control_event_hs_descriptor_receive_end(const char *action,
*/ */
void void
control_event_hs_descriptor_upload_end(const char *action, control_event_hs_descriptor_upload_end(const char *action,
const char *onion_address,
const char *id_digest, const char *id_digest,
const char *reason) const char *reason)
{ {
@ -6400,8 +6401,9 @@ control_event_hs_descriptor_upload_end(const char *action,
} }
send_control_event(EVENT_HS_DESC, send_control_event(EVENT_HS_DESC,
"650 HS_DESC %s UNKNOWN UNKNOWN %s%s\r\n", "650 HS_DESC %s %s UNKNOWN %s%s\r\n",
action, action,
rend_hsaddress_str_or_unknown(onion_address),
node_describe_longname_by_id(id_digest), node_describe_longname_by_id(id_digest),
reason_field ? reason_field : ""); reason_field ? reason_field : "");
@ -6431,14 +6433,17 @@ control_event_hs_descriptor_received(const char *onion_address,
* called when we successfully uploaded a hidden service descriptor. * called when we successfully uploaded a hidden service descriptor.
*/ */
void void
control_event_hs_descriptor_uploaded(const char *id_digest) control_event_hs_descriptor_uploaded(const char *id_digest,
const char *onion_address)
{ {
if (!id_digest) { if (!id_digest) {
log_warn(LD_BUG, "Called with id_digest==%p", log_warn(LD_BUG, "Called with id_digest==%p",
id_digest); id_digest);
return; return;
} }
control_event_hs_descriptor_upload_end("UPLOADED", id_digest, NULL);
control_event_hs_descriptor_upload_end("UPLOADED", onion_address,
id_digest, NULL);
} }
/** Send HS_DESC event to inform controller that query <b>rend_query</b> /** Send HS_DESC event to inform controller that query <b>rend_query</b>
@ -6500,6 +6505,7 @@ control_event_hs_descriptor_content(const char *onion_address,
*/ */
void void
control_event_hs_descriptor_upload_failed(const char *id_digest, control_event_hs_descriptor_upload_failed(const char *id_digest,
const char *onion_address,
const char *reason) const char *reason)
{ {
if (!id_digest) { if (!id_digest) {
@ -6507,7 +6513,7 @@ control_event_hs_descriptor_upload_failed(const char *id_digest,
id_digest); id_digest);
return; return;
} }
control_event_hs_descriptor_upload_end("UPLOAD_FAILED", control_event_hs_descriptor_upload_end("UPLOAD_FAILED", onion_address,
id_digest, reason); id_digest, reason);
} }

View File

@ -129,16 +129,19 @@ void control_event_hs_descriptor_receive_end(const char *action,
const char *id_digest, const char *id_digest,
const char *reason); const char *reason);
void control_event_hs_descriptor_upload_end(const char *action, void control_event_hs_descriptor_upload_end(const char *action,
const char *onion_address,
const char *hs_dir, const char *hs_dir,
const char *reason); const char *reason);
void control_event_hs_descriptor_received(const char *onion_address, void control_event_hs_descriptor_received(const char *onion_address,
const rend_data_t *rend_data, const rend_data_t *rend_data,
const char *id_digest); const char *id_digest);
void control_event_hs_descriptor_uploaded(const char *hs_dir); void control_event_hs_descriptor_uploaded(const char *hs_dir,
const char *onion_address);
void control_event_hs_descriptor_failed(const rend_data_t *rend_data, void control_event_hs_descriptor_failed(const rend_data_t *rend_data,
const char *id_digest, const char *id_digest,
const char *reason); const char *reason);
void control_event_hs_descriptor_upload_failed(const char *hs_dir, void control_event_hs_descriptor_upload_failed(const char *hs_dir,
const char *onion_address,
const char *reason); const char *reason);
void control_event_hs_descriptor_content(const char *onion_address, void control_event_hs_descriptor_content(const char *onion_address,
const char *desc_id, const char *desc_id,

View File

@ -2364,16 +2364,21 @@ connection_dir_client_reached_eof(dir_connection_t *conn)
if (conn->base_.purpose == DIR_PURPOSE_UPLOAD_RENDDESC_V2) { if (conn->base_.purpose == DIR_PURPOSE_UPLOAD_RENDDESC_V2) {
#define SEND_HS_DESC_UPLOAD_FAILED_EVENT(reason) ( \ #define SEND_HS_DESC_UPLOAD_FAILED_EVENT(reason) ( \
control_event_hs_descriptor_upload_failed(conn->identity_digest, \ control_event_hs_descriptor_upload_failed(conn->identity_digest, \
conn->rend_data->onion_address, \
reason) ) reason) )
log_info(LD_REND,"Uploaded rendezvous descriptor (status %d " log_info(LD_REND,"Uploaded rendezvous descriptor (status %d "
"(%s))", "(%s))",
status_code, escaped(reason)); status_code, escaped(reason));
/* Without the rend data, we'll have a problem identifying what has been
* uploaded for which service. */
tor_assert(conn->rend_data);
switch (status_code) { switch (status_code) {
case 200: case 200:
log_info(LD_REND, log_info(LD_REND,
"Uploading rendezvous descriptor: finished with status " "Uploading rendezvous descriptor: finished with status "
"200 (%s)", escaped(reason)); "200 (%s)", escaped(reason));
control_event_hs_descriptor_uploaded(conn->identity_digest); control_event_hs_descriptor_uploaded(conn->identity_digest,
conn->rend_data->onion_address);
rend_service_desc_has_uploaded(conn->rend_data); rend_service_desc_has_uploaded(conn->rend_data);
break; break;
case 400: case 400: