From cbc13b71c69feb493c1da25d4462c468e3a13092 Mon Sep 17 00:00:00 2001 From: Amaury Denoyelle Date: Tue, 29 Mar 2022 14:46:38 +0200 Subject: [PATCH] MINOR: mux-quic: define release app-ops Define a new callback release inside qcc_app_ops. It is called when the qcc MUX is freed via qc_release. This will allows to implement cleaning on the app layer. --- include/haproxy/mux_quic-t.h | 1 + src/mux_quic.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/include/haproxy/mux_quic-t.h b/include/haproxy/mux_quic-t.h index b15b88469..20d633b5e 100644 --- a/include/haproxy/mux_quic-t.h +++ b/include/haproxy/mux_quic-t.h @@ -118,6 +118,7 @@ struct qcc_app_ops { int (*decode_qcs)(struct qcs *qcs, int fin, void *ctx); size_t (*snd_buf)(struct conn_stream *cs, struct buffer *buf, size_t count, int flags); int (*finalize)(void *ctx); + void (*release)(void *ctx); }; #endif /* USE_QUIC */ diff --git a/src/mux_quic.c b/src/mux_quic.c index 8381a817b..e68b362b9 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -481,6 +481,9 @@ static void qc_release(struct qcc *qcc) TRACE_DEVEL("freeing qcc", QMUX_EV_QCC_END, conn); + if (qcc->app_ops && qcc->app_ops->release) + qcc->app_ops->release(qcc->ctx); + if (qcc->wait_event.tasklet) tasklet_free(qcc->wait_event.tasklet);