From e6cdfe574e2befca8252b320d7415485b985ba56 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Tue, 2 Jul 2019 16:36:15 +0200 Subject: [PATCH] BUG/MINOR: contrib/prometheus-exporter: Don't use channel_htx_recv_max() The function htx_free_data_space() must be used intead. Otherwise, if there are some output data not already forwarded, the maximum amount of data that may be inserted into the buffer may be greater than what we can really insert. This patch must be backported to 2.0. --- contrib/prometheus-exporter/service-prometheus.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/contrib/prometheus-exporter/service-prometheus.c b/contrib/prometheus-exporter/service-prometheus.c index c55233727b..60de8b4186 100644 --- a/contrib/prometheus-exporter/service-prometheus.c +++ b/contrib/prometheus-exporter/service-prometheus.c @@ -1214,7 +1214,7 @@ static int promex_dump_global_metrics(struct appctx *appctx, struct htx *htx) struct field metric; struct channel *chn = si_ic(appctx->owner); struct ist out = ist2(trash.area, 0); - size_t max = channel_htx_recv_max(chn, htx); + size_t max = htx_free_data_space(htx); int ret = 1; #ifdef USE_OPENSSL @@ -1427,7 +1427,7 @@ static int promex_dump_front_metrics(struct appctx *appctx, struct htx *htx) struct field metric; struct channel *chn = si_ic(appctx->owner); struct ist out = ist2(trash.area, 0); - size_t max = channel_htx_recv_max(chn, htx); + size_t max = htx_free_data_space(htx); int ret = 1; while (appctx->st2 && appctx->st2 < ST_F_TOTAL_FIELDS) { @@ -1605,7 +1605,7 @@ static int promex_dump_back_metrics(struct appctx *appctx, struct htx *htx) struct field metric; struct channel *chn = si_ic(appctx->owner); struct ist out = ist2(trash.area, 0); - size_t max = channel_htx_recv_max(chn, htx); + size_t max = htx_free_data_space(htx); int ret = 1; uint32_t weight; @@ -1824,7 +1824,7 @@ static int promex_dump_srv_metrics(struct appctx *appctx, struct htx *htx) struct field metric; struct channel *chn = si_ic(appctx->owner); struct ist out = ist2(trash.area, 0); - size_t max = channel_htx_recv_max(chn, htx); + size_t max = htx_free_data_space(htx); int ret = 1; uint32_t weight; -- 2.39.5