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.
This commit is contained in:
Mike Perry 2023-06-08 22:44:26 +00:00
parent ff59e2f490
commit da50d21c42

View File

@ -797,11 +797,6 @@ try_finalize_set(unlinked_circuits_t *unlinked)
unlinked->cfx = NULL; unlinked->cfx = NULL;
unlinked_free(unlinked); 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, log_info(LD_CIRC,
"Successfully linked a conflux %s set which is now usable.", "Successfully linked a conflux %s set which is now usable.",
is_client ? "client" : "relay"); is_client ? "client" : "relay");
@ -1964,6 +1959,12 @@ conflux_process_linked(circuit_t *circ, crypt_path_t *layer_hint,
goto end; 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; goto end;
close: close: