aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2012-08-21 11:20:58 -0400
committerNick Mathewson <nickm@torproject.org>2012-08-21 11:20:58 -0400
commit64676d05714a8248610bdbbc6270966ed440a33c (patch)
tree6b6713c26fbdc5073570f61306d7cdc0c5abb45d
parent939d01f0ba76268642baeef50fcf30be086de62e (diff)
parent778d90122cf491262e3298007d3165e181bbafe2 (diff)
downloadtor-64676d05714a8248610bdbbc6270966ed440a33c.tar
tor-64676d05714a8248610bdbbc6270966ed440a33c.tar.gz
Merge branch 'bug6638'
-rw-r--r--src/or/rendservice.c42
1 files changed, 25 insertions, 17 deletions
diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index 3d8d3e9aa..bd8b13a76 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -1177,8 +1177,9 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request,
/* Early parsing pass (get pk, ciphertext); type 2 is INTRODUCE2 */
parsed_req =
rend_service_begin_parse_intro(request, request_len, 2, &err_msg);
- if (!parsed_req) goto err;
- else if (err_msg) {
+ if (!parsed_req) {
+ goto log_error;
+ } else if (err_msg) {
log_info(LD_REND, "%s on circ %d.", err_msg, circuit->_base.n_circ_id);
tor_free(err_msg);
}
@@ -1186,8 +1187,9 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request,
stage_descr = "early validation";
/* Early validation of pk/ciphertext part */
result = rend_service_validate_intro_early(parsed_req, &err_msg);
- if (result < 0) goto err;
- else if (err_msg) {
+ if (result < 0) {
+ goto log_error;
+ } else if (err_msg) {
log_info(LD_REND, "%s on circ %d.", err_msg, circuit->_base.n_circ_id);
tor_free(err_msg);
}
@@ -1215,14 +1217,15 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request,
"INTRODUCE2 cell with same PK-encrypted part %d "
"seconds ago. Dropping cell.",
(int)elapsed);
- goto err;
+ goto err;
}
stage_descr = "decryption";
/* Now try to decrypt it */
result = rend_service_decrypt_intro(parsed_req, intro_key, &err_msg);
- if (result < 0) goto err;
- else if (err_msg) {
+ if (result < 0) {
+ goto log_error;
+ } else if (err_msg) {
log_info(LD_REND, "%s on circ %d.", err_msg, circuit->_base.n_circ_id);
tor_free(err_msg);
}
@@ -1230,8 +1233,9 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request,
stage_descr = "late parsing";
/* Parse the plaintext */
result = rend_service_parse_intro_plaintext(parsed_req, &err_msg);
- if (result < 0) goto err;
- else if (err_msg) {
+ if (result < 0) {
+ goto log_error;
+ } else if (err_msg) {
log_info(LD_REND, "%s on circ %d.", err_msg, circuit->_base.n_circ_id);
tor_free(err_msg);
}
@@ -1239,8 +1243,9 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request,
stage_descr = "late validation";
/* Validate the parsed plaintext parts */
result = rend_service_validate_intro_late(parsed_req, &err_msg);
- if (result < 0) goto err;
- else if (err_msg) {
+ if (result < 0) {
+ goto log_error;
+ } else if (err_msg) {
log_info(LD_REND, "%s on circ %d.", err_msg, circuit->_base.n_circ_id);
tor_free(err_msg);
}
@@ -1251,7 +1256,8 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request,
/* Find the rendezvous point */
rp = find_rp_for_intro(parsed_req, &need_rp_free, &err_msg);
- if (!rp) goto err;
+ if (!rp)
+ goto log_error;
/* Check if we'd refuse to talk to this router */
if (options->StrictNodes &&
@@ -1379,21 +1385,23 @@ rend_service_introduce(origin_circuit_t *circuit, const uint8_t *request,
goto done;
- err:
- status = -1;
+ log_error:
if (!err_msg) {
if (stage_descr) {
tor_asprintf(&err_msg,
"unknown %s error for INTRODUCE2", stage_descr);
- } else {
+ } else {
err_msg = tor_strdup("unknown error for INTRODUCE2");
- }
+ }
}
+
+ log_warn(LD_REND, "%s on circ %d", err_msg, circuit->_base.n_circ_id);
+ err:
+ status = -1;
if (dh) crypto_dh_free(dh);
if (launched) {
circuit_mark_for_close(TO_CIRCUIT(launched), reason);
}
- log_warn(LD_REND, "%s on circ %d", err_msg, circuit->_base.n_circ_id);
tor_free(err_msg);
done: