[tor-commits] [tor/master] Slightly refactor and fix couple callsites

nickm at torproject.org nickm at torproject.org
Thu Nov 3 18:37:16 UTC 2016


commit 70b9e79700f85ac07b931a2c836b4d63d0ba70c1
Author: David Goulet <dgoulet at torproject.org>
Date:   Thu Oct 27 10:34:02 2016 -0400

    Slightly refactor and fix couple callsites
    
    Signed-off-by: David Goulet <dgoulet at torproject.org>
---
 src/or/relay.c   |  7 +++----
 src/or/rendmid.c | 13 +++++++++----
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/or/relay.c b/src/or/relay.c
index aa29cc8..f5e9a6b 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -610,14 +610,13 @@ relay_send_command_from_edge_(streamid_t stream_id, circuit_t *circ,
 
   memset(&cell, 0, sizeof(cell_t));
   cell.command = CELL_RELAY;
-  if (cpath_layer) {
+  if (CIRCUIT_IS_ORIGIN(circ)) {
+    tor_assert(cpath_layer);
     cell.circ_id = circ->n_circ_id;
     cell_direction = CELL_DIRECTION_OUT;
-  } else if (! CIRCUIT_IS_ORIGIN(circ)) {
+  } else {
     cell.circ_id = TO_OR_CIRCUIT(circ)->p_circ_id;
     cell_direction = CELL_DIRECTION_IN;
-  } else {
-    tor_assert(0);
   }
 
   memset(&rh, 0, sizeof(rh));
diff --git a/src/or/rendmid.c b/src/or/rendmid.c
index 96993b6..f39c92a 100644
--- a/src/or/rendmid.c
+++ b/src/or/rendmid.c
@@ -106,7 +106,7 @@ rend_mid_establish_intro(or_circuit_t *circ, const uint8_t *request,
                                    RELAY_COMMAND_INTRO_ESTABLISHED,
                                    "", 0, NULL)<0) {
     log_info(LD_GENERAL, "Couldn't send INTRO_ESTABLISHED cell.");
-    return -1;
+    goto err_no_close;
   }
 
   /* Now, set up this circuit. */
@@ -122,8 +122,9 @@ rend_mid_establish_intro(or_circuit_t *circ, const uint8_t *request,
   log_warn(LD_PROTOCOL, "Rejecting truncated ESTABLISH_INTRO cell.");
   reason = END_CIRC_REASON_TORPROTOCOL;
  err:
-  if (pk) crypto_pk_free(pk);
   circuit_mark_for_close(TO_CIRCUIT(circ), reason);
+ err_no_close:
+  if (pk) crypto_pk_free(pk);
   return -1;
 }
 
@@ -201,13 +202,15 @@ rend_mid_introduce(or_circuit_t *circ, const uint8_t *request,
                                    (char*)request, request_len, NULL)) {
     log_warn(LD_GENERAL,
              "Unable to send INTRODUCE2 cell to Tor client.");
-    goto err;
+    /* Stop right now, the circuit has been closed. */
+    return -1;
   }
   /* And send an ack down the client's circuit.  Empty body means succeeded. */
   if (relay_send_command_from_edge(0,TO_CIRCUIT(circ),
                                    RELAY_COMMAND_INTRODUCE_ACK,
                                    NULL,0,NULL)) {
     log_warn(LD_GENERAL, "Unable to send INTRODUCE_ACK cell to Tor client.");
+    /* Stop right now, the circuit has been closed. */
     return -1;
   }
 
@@ -266,6 +269,7 @@ rend_mid_establish_rendezvous(or_circuit_t *circ, const uint8_t *request,
                                    RELAY_COMMAND_RENDEZVOUS_ESTABLISHED,
                                    "", 0, NULL)<0) {
     log_warn(LD_PROTOCOL, "Couldn't send RENDEZVOUS_ESTABLISHED cell.");
+    /* Stop right now, the circuit has been closed. */
     return -1;
   }
 
@@ -342,7 +346,8 @@ rend_mid_rendezvous(or_circuit_t *circ, const uint8_t *request,
     log_warn(LD_GENERAL,
              "Unable to send RENDEZVOUS2 cell to client on circuit %u.",
              (unsigned)rend_circ->p_circ_id);
-    goto err;
+    /* Stop right now, the circuit has been closed. */
+    return -1;
   }
 
   /* Join the circuits. */





More information about the tor-commits mailing list