Explorar el Código

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 hace 10 años
padre
commit
4a6f5bb2dd
Se han modificado 2 ficheros con 12 adiciones y 2 borrados
  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;
   }