tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

commit da50d21c42b43ede01bad48d205db67e6eed8bd2
parent ff59e2f490c2ee2f119bfe85e7d95cd7e0bb51fa
Author: Mike Perry <mikeperry-git@torproject.org>
Date:   Thu,  8 Jun 2023 22:44:26 +0000

Bug 40801: Send LINKED_ACK before attaching streams

Otherwise, the BEGIN cell arrives at the exit before it has an RTT,
and then it does not know which circuit to prefer in response.

Diffstat:
Msrc/core/or/conflux_pool.c | 11++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/core/or/conflux_pool.c b/src/core/or/conflux_pool.c @@ -797,11 +797,6 @@ try_finalize_set(unlinked_circuits_t *unlinked) unlinked->cfx = NULL; unlinked_free(unlinked); - /* Now that this set is ready to use, try any pending streams again. */ - if (is_client) { - connection_ap_attach_pending(1); - } - log_info(LD_CIRC, "Successfully linked a conflux %s set which is now usable.", is_client ? "client" : "relay"); @@ -1964,6 +1959,12 @@ conflux_process_linked(circuit_t *circ, crypt_path_t *layer_hint, goto end; } + /* If this set is ready to use with a valid conflux set, try any pending + * streams again. */ + if (circ->conflux) { + connection_ap_attach_pending(1); + } + goto end; close: