Skip to content
Snippets Groups Projects
Commit 0235d1fb authored by David Goulet's avatar David Goulet :panda_face:
Browse files

conflux: Flag set as in full teardown in the free path


We suspect a shutdown race of some sort for which the full teardown is not
noticed during the close but should be during the free.

For that, we flag the conflux set as in full teardown (if so) in the free path
in case the close path didn't caught it.

Fixes #40870

Signed-off-by: David Goulet's avatarDavid Goulet <dgoulet@torproject.org>
parent c11ba9de
No related branches found
No related tags found
No related merge requests found
o Minor bugfixes (conflux, client):
- Avoid a non fatal assert caused by data coming in on a conflux set that is
being closed. Fixes bug 40870; bugfix on 0.4.8.1-alpha.
......@@ -1607,7 +1607,10 @@ linked_circuit_free(circuit_t *circ, bool is_client)
/* Circuit can be freed without being closed and so we try to delete this leg
* so we can learn if this circuit is the last leg or not. */
cfx_del_leg(circ->conflux, circ);
if (cfx_del_leg(circ->conflux, circ)) {
/* Don't clear the full teardown flag, only set it. */
circ->conflux->in_full_teardown = true;
}
if (CONFLUX_NUM_LEGS(circ->conflux) > 0) {
/* The last leg will free the streams but until then, we nullify to avoid
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment