mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 04:13:28 +01:00
e80893e51b
First, hs_service_intro_circ_has_closed() is now called in circuit_mark_for close() because the HS subsystem needs to learn when an intro point is actually not established anymore as soon as possible. There is a time window between a close and a free. Second, when we mark for close, we also remove it from the circuitmap because between the close and the free, a service can launch an new circuit to that same intro point and thus register it which only succeeds if the intro point authentication key is not already in the map. However, we still do a remove from the circuitmap in circuit_free() in order to also cleanup the circuit if it wasn't marked for close prior to the free. Fixes #23603 Signed-off-by: David Goulet <dgoulet@torproject.org>
8 lines
474 B
Plaintext
8 lines
474 B
Plaintext
o Minor bugfixes (hidden service v3):
|
|
- Fix a race between the circuit close and free where the service would
|
|
launch a new intro circuit after the close, and then fail to register it
|
|
before the free of the previously closed circuit. This was making the
|
|
service unable to find the established intro circuit and thus not upload
|
|
its descriptor. It can make a service unavailable for up to 24 hours.
|
|
Fixes bug 23603; bugfix on 0.3.2.1-alpha.
|