aboutsummaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorMike Perry <mikeperry-git@torproject.org>2023-06-08 22:44:26 +0000
committerMike Perry <mikeperry-git@torproject.org>2023-06-09 16:29:10 +0000
commitda50d21c42b43ede01bad48d205db67e6eed8bd2 (patch)
tree9622bf1e39bf913654aff61977002cd4be839feb /src/core
parentff59e2f490c2ee2f119bfe85e7d95cd7e0bb51fa (diff)
downloadtor-da50d21c42b43ede01bad48d205db67e6eed8bd2.tar.gz
tor-da50d21c42b43ede01bad48d205db67e6eed8bd2.zip
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 (limited to 'src/core')
-rw-r--r--src/core/or/conflux_pool.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/core/or/conflux_pool.c b/src/core/or/conflux_pool.c
index 7e38e151a8..c8018f45e2 100644
--- 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: