Explorar el Código

Check for intro circ timeouts properly

Previously, we would treat an intro circuit failure as a timeout iff the
circuit failed due to a mismatch in relay identity keys.  (Due to a bug
elsewhere, we only recognize relay identity-key mismatches on the first
hop, so this isn't as bad as it could have been.)

Bugfix on commit eaed37d14c6e1dc93a392f62ef2e501f75e4878a, not yet in any
release.
Robert Ransom hace 14 años
padre
commit
b095be7f69
Se han modificado 1 ficheros con 2 adiciones y 2 borrados
  1. 2 2
      src/or/circuitlist.c

+ 2 - 2
src/or/circuitlist.c

@@ -1192,7 +1192,7 @@ _circuit_mark_for_close(circuit_t *circ, int reason, int line,
   }
   if (circ->purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT) {
     origin_circuit_t *ocirc = TO_ORIGIN_CIRCUIT(circ);
-    int timed_out = (reason == END_STREAM_REASON_TIMEOUT);
+    int timed_out = (reason == END_CIRC_REASON_TIMEOUT);
     tor_assert(circ->state == CIRCUIT_STATE_OPEN);
     tor_assert(ocirc->build_state->chosen_exit);
     tor_assert(ocirc->rend_data);
@@ -1207,7 +1207,7 @@ _circuit_mark_for_close(circuit_t *circ, int reason, int line,
                                            INTRO_POINT_FAILURE_TIMEOUT :
                                            INTRO_POINT_FAILURE_GENERIC);
   } else if (circ->purpose == CIRCUIT_PURPOSE_C_INTRODUCING &&
-             reason != END_STREAM_REASON_TIMEOUT) {
+             reason != END_CIRC_REASON_TIMEOUT) {
     origin_circuit_t *ocirc = TO_ORIGIN_CIRCUIT(circ);
     tor_assert(ocirc->build_state->chosen_exit);
     tor_assert(ocirc->rend_data);