Browse Source

Improve "Tried to establish rendezvous on non-OR or non-edge circuit"

Instead of putting it all in one warning message, log what exactly
was wrong with the circuit.

Resolves ticket 12997.
Nick Mathewson 9 years ago
parent
commit
4a6f5bb2dd
2 changed files with 12 additions and 2 deletions
  1. 3 0
      changes/bug12997
  2. 9 2
      src/or/rendmid.c

+ 3 - 0
changes/bug12997

@@ -0,0 +1,3 @@
+  o Minor features:
+    - Log more specific warnings when we get an ESTABLISH_RENDEZVOUS cell
+      on a cannibalized or non-OR circuit. Resolves ticket 12997.

+ 9 - 2
src/or/rendmid.c

@@ -224,9 +224,16 @@ rend_mid_establish_rendezvous(or_circuit_t *circ, const uint8_t *request,
   log_info(LD_REND, "Received an ESTABLISH_RENDEZVOUS request on circuit %u",
            (unsigned)circ->p_circ_id);
 
-  if (circ->base_.purpose != CIRCUIT_PURPOSE_OR || circ->base_.n_chan) {
+  if (circ->base_.purpose != CIRCUIT_PURPOSE_OR) {
+    log_warn(LD_PROTOCOL,
+             "Tried to establish rendezvous on non-OR circuit with purpose %s",
+             circuit_purpose_to_string(circ->base_.purpose));
+    goto err;
+  }
+
+  if (circ->base_.n_chan) {
     log_warn(LD_PROTOCOL,
-             "Tried to establish rendezvous on non-OR or non-edge circuit.");
+             "Tried to establish rendezvous on non-edge circuit");
     goto err;
   }