[tor-commits] [tor/maint-0.4.4] Refactor setup_intro_circ_auth_key() to make it simpler.

dgoulet at torproject.org dgoulet at torproject.org
Thu Jul 9 11:29:22 UTC 2020


commit c1598be1e01cdadda56f9fd41909ee8e9b7b4ecf
Author: George Kadianakis <desnacked at riseup.net>
Date:   Fri Jul 3 16:08:34 2020 +0300

    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.
---
 src/feature/hs/hs_client.c | 25 ++++++++++++-------------
 1 file changed, 12 insertions(+), 13 deletions(-)

diff --git a/src/feature/hs/hs_client.c b/src/feature/hs/hs_client.c
index a49999d7d..7f4d5385e 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. */





More information about the tor-commits mailing list