In the circuit_about_to_free(), we clear the circ->conflux object and then we
end up trying to emit an event on the control port which calls
CIRCUIT_IS_CONFLUX() and non fatal assert on the false branch.
Fixes #41037
Signed-off-by: David Goulet <dgoulet@torproject.org>
--- /dev/null
+ o Minor bugfix (conflux):
+ - Avoid a non fatal assert when describing a conflux circuit on the control
+ port after being prepped to be freed. Fixes bug 41037; bugfix on 0.4.8.15.
tor_assert_nonfatal(circ->purpose == CIRCUIT_PURPOSE_CONFLUX_LINKED);
return true;
} else {
- tor_assert_nonfatal(circ->purpose != CIRCUIT_PURPOSE_CONFLUX_LINKED);
- tor_assert_nonfatal(circ->purpose != CIRCUIT_PURPOSE_CONFLUX_UNLINKED);
+ /* 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. */
return false;
}
}