BUG/MINOR: contrib/prometheus-exporter: Respect the reserve when data are sent

The previous commit e6cdfe574 ("BUG/MINOR: contrib/prometheus-exporter: Don't
use channel_htx_recv_max()") is buggy. The buffer's reserve must be respected.

This patch must be backported to 2.0 and 1.9.

(cherry picked from commit 11921e6819a07219e8ed6adbdd276bdbdcdb324d)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
diff --git a/contrib/prometheus-exporter/service-prometheus.c b/contrib/prometheus-exporter/service-prometheus.c
index 60de8b4..b57af99 100644
--- a/contrib/prometheus-exporter/service-prometheus.c
+++ b/contrib/prometheus-exporter/service-prometheus.c
@@ -1214,7 +1214,7 @@
 	struct field metric;
 	struct channel *chn = si_ic(appctx->owner);
 	struct ist out = ist2(trash.area, 0);
-	size_t max = htx_free_data_space(htx);
+	size_t max = htx_get_max_blksz(htx, channel_htx_recv_max(chn, htx));
 	int ret = 1;
 
 #ifdef USE_OPENSSL
@@ -1227,7 +1227,6 @@
 		ssl_reuse = 100 - (100 * ssl_key_rate + (ssl_sess_rate - 1) / 2) / ssl_sess_rate;
 	}
 #endif
-
 	while (appctx->st2 && appctx->st2 < INF_TOTAL_FIELDS) {
 		switch (appctx->st2) {
 			case INF_NBTHREAD:
@@ -1427,7 +1426,7 @@
 	struct field metric;
 	struct channel *chn = si_ic(appctx->owner);
 	struct ist out = ist2(trash.area, 0);
-	size_t max = htx_free_data_space(htx);
+	size_t max = htx_get_max_blksz(htx, channel_htx_recv_max(chn, htx));
 	int ret = 1;
 
 	while (appctx->st2 && appctx->st2 < ST_F_TOTAL_FIELDS) {
@@ -1605,7 +1604,7 @@
 	struct field metric;
 	struct channel *chn = si_ic(appctx->owner);
 	struct ist out = ist2(trash.area, 0);
-	size_t max = htx_free_data_space(htx);
+	size_t max = htx_get_max_blksz(htx, channel_htx_recv_max(chn, htx));
 	int ret = 1;
 	uint32_t weight;
 
@@ -1824,7 +1823,7 @@
 	struct field metric;
 	struct channel *chn = si_ic(appctx->owner);
 	struct ist out = ist2(trash.area, 0);
-	size_t max = htx_free_data_space(htx);
+	size_t max = htx_get_max_blksz(htx, channel_htx_recv_max(chn, htx));
 	int ret = 1;
 	uint32_t weight;
 
@@ -2153,7 +2152,6 @@
 	int ret;
 
 	res_htx = htx_from_buf(&res->buf);
-
 	if (unlikely(si->state == SI_ST_DIS || si->state == SI_ST_CLO))
 		goto out;