From 1effe0fc0ab54ae3cc6c5e832276f3446f5d5eef Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Wed, 5 Nov 2025 11:36:07 +0100 Subject: [PATCH] MINOR: applet: Add function to get amount of data in the output buffer The helper function applet_output_data() returns the amount of data in the output buffer of an applet. For applets using the new API, it is based on data present in the outbuf buffer. For legacy applets, it is based on input data present in the input channel's buffer. The HTX version, applet_htx_output_data(), is also available This patch is related to issue #1617. --- include/haproxy/applet.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/include/haproxy/applet.h b/include/haproxy/applet.h index 018290d62..8f2943e68 100644 --- a/include/haproxy/applet.h +++ b/include/haproxy/applet.h @@ -340,6 +340,27 @@ static inline size_t applet_input_data(const struct appctx *appctx) return co_data(sc_oc(appctx_sc(appctx))); } +/* Returns the amount of HTX data in the output buffer (see applet_get_outbuf) */ +static inline size_t applet_htx_output_data(const struct appctx *appctx) +{ + if (appctx_app_test(appctx, APPLET_FL_NEW_API)) + return htx_used_space(htxbuf(&appctx->outbuf)); + else + return ci_data(sc_ic(appctx_sc(appctx))); +} + +/* Returns the amount of data in the output buffer (see applet_get_outbuf) */ +static inline size_t applet_output_data(const struct appctx *appctx) +{ + if (appctx_app_test(appctx, APPLET_FL_HTX)) + return applet_htx_output_data(appctx); + + if (appctx_app_test(appctx, APPLET_FL_NEW_API)) + return b_data(&appctx->outbuf); + else + return ci_data(sc_ic(appctx_sc(appctx))); +} + /* Skips bytes from the input buffer (see applet_get_inbuf). * * This is useful when data have been read directly from the buffer. It is -- 2.47.3