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

hs-v3: Close all SOCKS request on descriptor failure


Client side, when a descriptor is finally fetched and stored in the cache, we
then go over all pending SOCKS request for that descriptor. If it turns out
that the intro points are unusable, we close the first SOCKS request but not
the others for the same .onion.

This commit makes it that we'll close all SOCKS requests so we don't let
hanging the other ones.

It also fixes another bug which is having a SOCKS connection in RENDDESC_WAIT
state but with a descriptor in the cache. At some point, tor will expire the
intro failure cache which will make that descriptor usable again. When
retrying all SOCKS connection (retry_all_socks_conn_waiting_for_desc()), we
won't end up in the code path where we have already the descriptor for a
pending request causing a BUG().

Bottom line is that we should never have pending requests (waiting for a
descriptor) with that descriptor in the cache (even if unusable).

Fixees #27410.

Signed-off-by: David Goulet's avatarDavid Goulet <dgoulet@torproject.org>
parent 11915967
No related branches found
No related tags found
No related merge requests found
o Minor bugfixes (hidden service v3):
- Close all SOCKS request (for the same .onion) if the newly fetched
descriptor is unusable. Before that, we would close only the first one
leaving the other hanging and let to time out by themselves. Fixes bug
27410; bugfix on 0.3.2.1-alpha.
......@@ -1688,7 +1688,7 @@ hs_client_desc_has_arrived(const hs_ident_dir_conn_t *ident)
/* We are unable to use the descriptor so remove the directory request
* from the cache so the next connection can try again. */
note_connection_attempt_succeeded(edge_conn->hs_ident);
goto end;
continue;
}
log_info(LD_REND, "Descriptor has arrived. Launching circuits.");
......
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