BUG/MINOR: contrib/prometheus-exporter: Don't try to add empty data blocks

When the response buffer is full and nothing more can be inserted, it is
important to not try to insert an empty data block. Otherwise, when the function
channel_add_input() is called, the flag CF_READ_PARTIAL is set on the response
channel while nothing was read and the stream is uselessly woken up. Finally, we
have loop while the response buffer is full.

This patch must be backported to 2.0.

(cherry picked from commit 0c55a15ce17ac4ba97151acfcd2d9f54bfba1bc6)
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 b57af99..2aafd4d 100644
--- a/contrib/prometheus-exporter/service-prometheus.c
+++ b/contrib/prometheus-exporter/service-prometheus.c
@@ -1408,9 +1408,11 @@
 	}
 
   end:
-	if (!htx_add_data_atonce(htx, out))
-		return -1; /* Unexpected and unrecoverable error */
-	channel_add_input(chn, out.len);
+	if (out.len) {
+		if (!htx_add_data_atonce(htx, out))
+			return -1; /* Unexpected and unrecoverable error */
+		channel_add_input(chn, out.len);
+	}
 	return ret;
   full:
 	ret = 0;
@@ -1586,9 +1588,11 @@
 	}
 
   end:
-	if (!htx_add_data_atonce(htx, out))
-		return -1; /* Unexpected and unrecoverable error */
-	channel_add_input(chn, out.len);
+	if (out.len) {
+		if (!htx_add_data_atonce(htx, out))
+			return -1; /* Unexpected and unrecoverable error */
+		channel_add_input(chn, out.len);
+	}
 	return ret;
   full:
 	ret = 0;
@@ -1804,9 +1808,11 @@
 	}
 
   end:
-	if (!htx_add_data_atonce(htx, out))
-		return -1; /* Unexpected and unrecoverable error */
-	channel_add_input(chn, out.len);
+	if (out.len) {
+		if (!htx_add_data_atonce(htx, out))
+			return -1; /* Unexpected and unrecoverable error */
+		channel_add_input(chn, out.len);
+	}
 	return ret;
   full:
 	ret = 0;
@@ -1998,9 +2004,11 @@
 
 
   end:
-	if (!htx_add_data_atonce(htx, out))
-		return -1; /* Unexpected and unrecoverable error */
-	channel_add_input(chn, out.len);
+	if (out.len) {
+		if (!htx_add_data_atonce(htx, out))
+			return -1; /* Unexpected and unrecoverable error */
+		channel_add_input(chn, out.len);
+	}
 	return ret;
   full:
 	ret = 0;