Bug #40842: Don't send on sets that are being torn down

This commit is contained in:
Mike Perry 2023-08-25 22:42:18 +00:00
parent 4119a7f971
commit fd6f098c9d
2 changed files with 13 additions and 0 deletions

View File

@ -604,6 +604,12 @@ conflux_decide_next_circ(conflux_t *cfx)
// this once tuning is complete.
conflux_validate_legs(cfx);
/* If the conflux set is tearing down and has no current leg,
* bail and give up */
if (cfx->in_full_teardown) {
return NULL;
}
/* If we don't have a current leg yet, pick one.
* (This is the only non-const operation in this function). */
if (!cfx->curr_leg) {

View File

@ -38,6 +38,13 @@ circuit_get_package_window(circuit_t *circ,
tor_assert_nonfatal(circ->purpose ==
CIRCUIT_PURPOSE_CONFLUX_LINKED);
}
circuit_t *orig_circ = circ;
/* If conflux is in the process of tearing down the set,
* the package window is 0 -- there is no room. */
if (circ->conflux->in_full_teardown)
return 0;
circ = conflux_decide_next_circ(circ->conflux);
/* If conflux has no circuit to send on, the package window is 0. */