From: Frederic Lecaille Date: Thu, 6 Nov 2025 14:36:43 +0000 (+0100) Subject: MINOR: quic-be: avoid a useless I/O callback wakeup for 0-RTT sessions X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6c20002a322b8b7ef60fe46e009640c417d90a95;p=thirdparty%2Fhaproxy.git MINOR: quic-be: avoid a useless I/O callback wakeup for 0-RTT sessions For backends and 0-RTT sessions, this patch modifies the ->start() callback to wake up the I/O callback only if the connection (and the mux) is not ready. Note that connect_server() has been modified to call this xprt callback just after having created the mux and installed the mux. Contrary to 1-RTT session, for 0-RTT sessions, the connections are always ready before calling this ->start xprt callback. --- diff --git a/src/xprt_quic.c b/src/xprt_quic.c index c256f4427..5ab196a3b 100644 --- a/src/xprt_quic.c +++ b/src/xprt_quic.c @@ -182,7 +182,8 @@ static int qc_xprt_start(struct connection *conn, void *ctx) * is not done for 0-RTT as xprt->start happens before handshake * completion. */ - if (qc_is_back(qc) || (qc->flags & QUIC_FL_CONN_NEED_POST_HANDSHAKE_FRMS)) + if ((qc_is_back(qc) && !qc_is_conn_ready(qc)) || + (qc->flags & QUIC_FL_CONN_NEED_POST_HANDSHAKE_FRMS)) tasklet_wakeup(qc->wait_event.tasklet); ret = 1;