From: Christopher Faulet Date: Wed, 5 Nov 2025 10:36:07 +0000 (+0100) Subject: MINOR: applet: Add function to get amount of data in the output buffer X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1effe0fc0ab54ae3cc6c5e832276f3446f5d5eef;p=thirdparty%2Fhaproxy.git 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. --- 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