From 987812b190cd98f1f17d3d30e79e07d7e46fca3e Mon Sep 17 00:00:00 2001 From: Amaury Denoyelle Date: Mon, 17 Apr 2023 09:31:16 +0200 Subject: [PATCH] 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. --- src/quic_sock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/quic_sock.c b/src/quic_sock.c index 2ecc96bae..ac83b9883 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))