aboutsummaryrefslogtreecommitdiff
path: root/src/feature/hs
diff options
context:
space:
mode:
authorGeorge Kadianakis <desnacked@riseup.net>2020-07-03 16:08:34 +0300
committerGeorge Kadianakis <desnacked@riseup.net>2020-07-09 10:40:56 +0300
commitc1598be1e01cdadda56f9fd41909ee8e9b7b4ecf (patch)
treee62af2d0a5841be6d455202757c7a479d6add82d /src/feature/hs
parente0da64fd27a8c1a34668dfa337877c0aeb398022 (diff)
downloadtor-c1598be1e01cdadda56f9fd41909ee8e9b7b4ecf.tar.gz
tor-c1598be1e01cdadda56f9fd41909ee8e9b7b4ecf.zip
Refactor setup_intro_circ_auth_key() to make it simpler.
It now uses the 'goto err' pattern, instead of the fatal_unreached() pattern. The latter pattern is usually used when there is a loop, but there is no loop in this function so it can be simplified easily.
Diffstat (limited to 'src/feature/hs')
-rw-r--r--src/feature/hs/hs_client.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/feature/hs/hs_client.c b/src/feature/hs/hs_client.c
index a49999d7d1..7f4d5385e9 100644
--- a/src/feature/hs/hs_client.c
+++ b/src/feature/hs/hs_client.c
@@ -722,29 +722,28 @@ setup_intro_circ_auth_key(origin_circuit_t *circ)
* and the client descriptor cache that gets purged (NEWNYM) or the
* cleaned up because it expired. Mark the circuit for close so a new
* descriptor fetch can occur. */
- circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_INTERNAL);
- goto end;
+ goto err;
}
/* We will go over every intro point and try to find which one is linked to
* that circuit. Those lists are small so it's not that expensive. */
ip = find_desc_intro_point_by_legacy_id(
circ->build_state->chosen_exit->identity_digest, desc);
- if (ip) {
- /* We got it, copy its authentication key to the identifier. */
- ed25519_pubkey_copy(&circ->hs_ident->intro_auth_pk,
- &ip->auth_key_cert->signed_key);
- goto end;
+ if (!ip) {
+ /* Reaching this point means we didn't find any intro point for this
+ * circuit which is not supposed to happen. */
+ log_info(LD_REND,"Could not match opened intro circuit with intro point.");
+ goto err;
}
- /* Reaching this point means we didn't find any intro point for this circuit
- * which is not supposed to happen. */
+ /* We got it, copy its authentication key to the identifier. */
+ ed25519_pubkey_copy(&circ->hs_ident->intro_auth_pk,
+ &ip->auth_key_cert->signed_key);
+ return 0;
+
+ err:
circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_INTERNAL);
- log_info(LD_REND, "Could not match opened intro circuit with intro point.");
return -1;
-
- end:
- return 0;
}
/** Called when an introduction circuit has opened. */