tor/src/feature/client
David Goulet 16a0b7ed67 guard: Ignore marked for close circuit when changing state to open
When we consider all circuits in "waiting for guard" state to be promoted to
an "open" state, we were considering all circuits, even the one marked for
close.

This ultiamtely triggers a "circuit_has_opened()" called on the circuit that
is marked for close which then leads to possible undesirable behaviors within
a subsystem.

For instance, the HS subsystem would be unable to find the authentication key
of the introduction point circuit leading to a BUG() warning and a duplicate
mark for close on the circuit.

This commit also adds a unit test to make sure we never select marked for
close circuits when upgrading its guard state from waiting for guard to open.

Fixes #30871

Signed-off-by: David Goulet <dgoulet@torproject.org>
2019-06-19 07:42:30 -04:00
..
addressmap.c Split all controller events code into a new control_events.c 2019-03-25 12:11:59 -04:00
addressmap.h Bump copyright date to 2019 2019-01-16 12:33:22 -05:00
bridges.c Replace all remaining tor_mem_is_zero() with fast_mem_is_zero() 2019-04-30 14:49:05 -04:00
bridges.h Bump copyright date to 2019 2019-01-16 12:33:22 -05:00
circpathbias.c Add control port circuit ID to all pathbias bug messages. 2019-05-15 16:44:59 +03:00
circpathbias.h Bump copyright date to 2019 2019-01-16 12:33:22 -05:00
dnsserv.c Split all controller events code into a new control_events.c 2019-03-25 12:11:59 -04:00
dnsserv.h Bump copyright date to 2019 2019-01-16 12:33:22 -05:00
entrynodes.c guard: Ignore marked for close circuit when changing state to open 2019-06-19 07:42:30 -04:00
entrynodes.h Bump copyright date to 2019 2019-01-16 12:33:22 -05:00
transports.c Split all controller events code into a new control_events.c 2019-03-25 12:11:59 -04:00
transports.h Bump copyright date to 2019 2019-01-16 12:33:22 -05:00