mirror of
https://github.com/haproxy/haproxy.git
synced 2026-02-19 02:29:31 -05:00
This bug impacts only QUIC backend.
There was a race conditiion due to the way the cached ALPNs needed for
0-RTT sessions are reused. A first thread could see no cached ALPN
leading the app ops to be non initialized. This is normal. Then a second
thread with enough CPU ressource could successfully complete its handshake
and cached the ALPN (in the underlying server struct). When the first
thread comes back to connect_server(), its mux is initialized because
an cached ALPN value is availble, leading to a crash because of the
app ops which are not initialized for this connection.
The app ops, ALPN reuse and transport parameters were added to
ssl_sock_srv_try_reuse_sess() by this commit
MEDIUM: quic-be: modify ssl_sock_srv_try_reuse_sess() to reuse backend
sessions (0-RTT)
This patch reverts these modifications. This is a good thing because
this function returns to its original goal: reuse a SSL session (with or
without 0-RTT). That's it!
The mux is modified to set the app ops it not already when it called.
This is done by qcc_install_app_ops(). The call to this function has been
move before setting the transport parameters for the flow control.
Indeed, some paramaters have also been cached to be reused for the 0-RTT
sessions.
Must be backported to 3.3.
|
||
|---|---|---|
| .. | ||
| haproxy | ||
| import | ||
| make | ||