]> git.ipfire.org Git - thirdparty/haproxy.git/commit
MAJOR: quic: implement accept queue
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 19 Jan 2022 15:01:05 +0000 (16:01 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 26 Jan 2022 15:13:54 +0000 (16:13 +0100)
commitcfa2d5648fd668d1bcb09530757d28b5e95b5758
treeaec31c9e32779dff106dbd98a753e44692f39265
parentf68b2cb8160288f08b5d40c177f1c7ba84934465
MAJOR: quic: implement accept queue

Do not proceed to direct accept when creating a new quic_conn. Wait for
the QUIC handshake to succeeds to insert the quic_conn in the accept
queue. A tasklet is then woken up to call listener_accept to accept the
quic_conn.

The most important effect is that the connection/mux layers are not
instantiated at the same time as the quic_conn. This forces to delay
some process to be sure that the mux is allocated :
* initialization of mux transport parameters
* installation of the app-ops

Also, the mux instance is not checked now to wake up the quic_conn
tasklet. This is safe because the xprt-quic code is now ready to handle
the absence of the connection/mux layers.

Note that this commit has a deep impact as it changes significantly the
lower QUIC architecture. Most notably, it breaks the 0-RTT feature.
include/haproxy/quic_sock.h
include/haproxy/receiver-t.h
include/haproxy/xprt_quic-t.h
src/proto_quic.c
src/quic_sock.c
src/ssl_sock.c
src/xprt_quic.c