commit a3915d48f6d3f3959298e16edd20a8835ab2ae20 parent ea209f884b90d1d38e6e40848a8b32f70ebd2d8b Author: Mike Perry <mikeperry-git@torproject.org> Date: Thu, 6 Nov 2025 21:03:42 +0000 Revert the two previous attempts at #41037. Neither of these fully fixed the issue, which was introduced because the Tor Browser Circuit Display Support code in #40872 began accessing partially-altered conflux sets via control port CIRC_MINOR events. Diffstat:
| M | src/core/or/conflux_pool.c | | | 5 | ----- |
| M | src/core/or/conflux_util.h | | | 5 | ++--- |
2 files changed, 2 insertions(+), 8 deletions(-)
diff --git a/src/core/or/conflux_pool.c b/src/core/or/conflux_pool.c @@ -1460,11 +1460,6 @@ unlinked_circuit_closed(circuit_t *circ) /* This circuit is part of set that has already been removed previously freed * by another leg closing. */ if (!unlinked) { - /* This circuit is not Conflux related anymore regardless of its purpose so - * remove the pending nonce so after this function, the circuit is not - * considered conflux with CIRCUIT_IS_CONFLUX(). */ - tor_free(circ->conflux_pending_nonce); - circ->conflux_pending_nonce = NULL; return; } diff --git a/src/core/or/conflux_util.h b/src/core/or/conflux_util.h @@ -28,9 +28,8 @@ CIRCUIT_IS_CONFLUX(const circuit_t *circ) tor_assert_nonfatal(circ->purpose == CIRCUIT_PURPOSE_CONFLUX_LINKED); return true; } else { - /* We don't assert on purposes here because we can end up in this branch - * with circ->conflux being NULL but for a conflux purpose. This happens in - * the about_to_free() code path. */ + tor_assert_nonfatal(circ->purpose != CIRCUIT_PURPOSE_CONFLUX_LINKED); + tor_assert_nonfatal(circ->purpose != CIRCUIT_PURPOSE_CONFLUX_UNLINKED); return false; } }