diff options
author | David Goulet <dgoulet@torproject.org> | 2018-10-12 09:22:30 -0400 |
---|---|---|
committer | David Goulet <dgoulet@torproject.org> | 2018-10-18 12:56:51 -0400 |
commit | 9ba16c4d03a39bcd369ccd59f6bfa351f4b527d5 (patch) | |
tree | a677d211b4bde397322f3eaa21393bea3332a146 /src/feature/rend | |
parent | a5599fb71c51ddec47282164f71cfb06933096cc (diff) | |
download | tor-9ba16c4d03a39bcd369ccd59f6bfa351f4b527d5.tar.gz tor-9ba16c4d03a39bcd369ccd59f6bfa351f4b527d5.zip |
hs-v3: Close client intro circuits if the descriptor is replaced
When storing a descriptor in the client cache, if we are about to replace an
existing descriptor, make sure to close every introduction circuits of the old
descriptor so we don't have leftovers lying around.
Ticket 27471 describes a situation where tor is sending an INTRODUCE1 cell on
an introduction circuit for which it doesn't have a matching intro point
object (taken from the descriptor).
The main theory is that, after a new descriptor showed up, the introduction
points changed which led to selecting an introduction circuit not used by the
service anymore thus for which we are unable to find the corresponding
introduction point within the descriptor we just fetched.
Closes #27471.
Signed-off-by: David Goulet <dgoulet@torproject.org>
Diffstat (limited to 'src/feature/rend')
-rw-r--r-- | src/feature/rend/rendservice.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/feature/rend/rendservice.c b/src/feature/rend/rendservice.c index bae9da3fe5..d135581061 100644 --- a/src/feature/rend/rendservice.c +++ b/src/feature/rend/rendservice.c @@ -631,7 +631,7 @@ rend_service_prune_list_impl_(void) /* For every service introduction circuit we can find, see if we have a * matching surviving configured service. If not, close the circuit. */ - while ((ocirc = circuit_get_next_service_intro_circ(ocirc))) { + while ((ocirc = circuit_get_next_intro_circ(ocirc, false))) { int keep_it = 0; if (ocirc->rend_data == NULL) { /* This is a v3 circuit, ignore it. */ |