]> git.kaiwu.me - haproxy.git/commit
OPTIM: quic: rework the QUIC RX code
authorMaxime Henrion <mhenrion@haproxy.com>
Fri, 30 Jan 2026 16:39:04 +0000 (11:39 -0500)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 30 Apr 2026 13:33:07 +0000 (15:33 +0200)
commit9b5f11cd3db37f0739b89d695b87c1373e623f50
tree9e173bcf8e441594f5e39c187c09d6c44f26c737
parent57d8f0621510239deb50b28c8d44ec1aab59d6bf
OPTIM: quic: rework the QUIC RX code

Use an MPSC ring buffer to hold data for each datagram handler. Holding
this data in a per-handler buffer avoids the HoL blocking we experienced
when we had per-listener buffers with data from all threads mixed up
in them.

This also gets rid of the mt_list contention we were suffering before,
that was causing some threads to be stuck for a significant amount of
time, causing warnings and even crashes in some cases.
include/haproxy/proto_quic.h
include/haproxy/quic_rx-t.h
include/haproxy/quic_sock-t.h
include/haproxy/quic_sock.h
include/haproxy/receiver-t.h
src/proto_quic.c
src/quic_rx.c
src/quic_sock.c
src/quic_tp.c