From: Amaury Denoyelle Date: Mon, 17 Apr 2023 07:31:16 +0000 (+0200) Subject: MINOR: quic: do not proceed to accept for closing conn X-Git-Tag: v2.8-dev8~109 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=987812b190cd98f1f17d3d30e79e07d7e46fca3e;p=thirdparty%2Fhaproxy.git MINOR: quic: do not proceed to accept for closing conn Each quic_conn is inserted in an accept queue to allocate the upper layers. This is done through a listener tasklet in quic_sock_accept_conn(). This patch interrupts the accept process for a quic_conn in closing/draining state. Indeed, this connection will soon be closed so it's unnecessary to allocate a complete stack for it. This patch will become necessary when thread migration is implemented. Indeed, it won't be allowed to proceed to thread migration for a closing quic_conn. This should be backported up to 2.7 after a period of observation. --- diff --git a/src/quic_sock.c b/src/quic_sock.c index 2ecc96bae8..ac83b98833 100644 --- a/src/quic_sock.c +++ b/src/quic_sock.c @@ -150,7 +150,7 @@ struct connection *quic_sock_accept_conn(struct listener *l, int *status) struct li_per_thread *lthr = &l->per_thr[tid]; qc = MT_LIST_POP(<hr->quic_accept.conns, struct quic_conn *, accept_list); - if (!qc) + if (!qc || qc->flags & (QUIC_FL_CONN_CLOSING|QUIC_FL_CONN_DRAINING)) goto done; if (!new_quic_cli_conn(qc, l, &qc->peer_addr))