Commit 2c98104c authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Add another precondition for isolation-clearing; fix 3620

parent 5df99cec
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -1041,8 +1041,15 @@ circuit_has_opened(origin_circuit_t *circ)
     * controller did it. Just let it slide. */
  }

  if (can_try_clearing_isolation && !tried_clearing_isolation &&
  if (/* The circuit may have become non-open if it was cannibalized.*/
      circ->_base.state == CIRCUIT_STATE_OPEN &&
      /* Only if the purpose is clearable, and only if we haven't tried
       * to clear isolation yet, do we try. */
      can_try_clearing_isolation && !tried_clearing_isolation &&
      /* If !isolation_values_set, there is nothing to clear. */
      circ->isolation_values_set &&
      /* It's not legal to clear a circuit's isolation info if it's ever had
       * streams attached */
      !circ->isolation_any_streams_attached) {
    /* If we have any isolation information set on this circuit, and
     * we didn't manage to attach any streams to it, then we can