diff options
author | Nick Mathewson <nickm@torproject.org> | 2012-08-21 11:20:58 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2012-08-21 11:20:58 -0400 |
commit | 64676d05714a8248610bdbbc6270966ed440a33c (patch) | |
tree | 6b6713c26fbdc5073570f61306d7cdc0c5abb45d | |
parent | 939d01f0ba76268642baeef50fcf30be086de62e (diff) | |
parent | 778d90122cf491262e3298007d3165e181bbafe2 (diff) | |
download | tor-64676d05714a8248610bdbbc6270966ed440a33c.tar tor-64676d05714a8248610bdbbc6270966ed440a33c.tar.gz |
Merge branch 'bug6638'
-rw-r--r-- | src/or/rendservice.c | 42 |
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: |