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);