Revert "MEDIUM: stats: add support for HTTP keep-alive on the stats page"

This reverts commit f3221f99acdd792352d4ee648d987270d74ca38e.

Igor reported some very strange breakage of his stats page which is
clearly caused by the chunking, though I don't see at first glance
what could be wrong. Better revert it for now.
diff --git a/include/proto/dumpstats.h b/include/proto/dumpstats.h
index 3afff94..0da3091 100644
--- a/include/proto/dumpstats.h
+++ b/include/proto/dumpstats.h
@@ -31,7 +31,6 @@
 #define STAT_HIDE_DOWN  0x00000008	/* hide 'down' servers in the stats page */
 #define STAT_NO_REFRESH 0x00000010	/* do not automatically refresh the stats page */
 #define STAT_ADMIN      0x00000020	/* indicate a stats admin level */
-#define STAT_CHUNKED    0x00000040      /* use chunked encoding (HTTP/1.1) */
 #define STAT_BOUND      0x00800000	/* bound statistics to selected proxies/types/services */
 
 #define STATS_TYPE_FE  0
diff --git a/src/dumpstats.c b/src/dumpstats.c
index bded907..eeb662b 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -4136,23 +4136,17 @@
 	struct appctx *appctx = objt_appctx(si->end);
 
 	chunk_printf(&trash,
-		     "HTTP/1.%c 200 OK\r\n"
+		     "HTTP/1.0 200 OK\r\n"
 		     "Cache-Control: no-cache\r\n"
 		     "Connection: close\r\n"
 		     "Content-Type: %s\r\n",
-		     (appctx->ctx.stats.flags & STAT_CHUNKED) ? '1' : '0',
 		     (appctx->ctx.stats.flags & STAT_FMT_HTML) ? "text/html" : "text/plain");
 
 	if (uri->refresh > 0 && !(appctx->ctx.stats.flags & STAT_NO_REFRESH))
 		chunk_appendf(&trash, "Refresh: %d\r\n",
 			      uri->refresh);
 
-	/* we don't send the CRLF in chunked mode, it will be sent with the first chunk's size */
-
-	if (appctx->ctx.stats.flags & STAT_CHUNKED)
-		chunk_appendf(&trash, "Transfer-Encoding: chunked\r\n");
-	else
-		chunk_appendf(&trash, "\r\n");
+	chunk_appendf(&trash, "\r\n");
 
 	s->txn.status = 200;
 	s->logs.tv_request = now;
@@ -4238,53 +4232,8 @@
 	}
 
 	if (appctx->st0 == STAT_HTTP_DUMP) {
-		unsigned int prev_len = si->ib->buf->i;
-		unsigned int data_len;
-		unsigned int last_len;
-		unsigned int last_fwd;
-
-		if (appctx->ctx.stats.flags & STAT_CHUNKED) {
-			/* One difficulty we're facing is that we must prevent
-			 * the input data from being automatically forwarded to
-			 * the output area. For this, we temporarily disable
-			 * forwarding on the channel.
-			 */
-			last_fwd = si->ib->to_forward;
-			si->ib->to_forward = 0;
-			chunk_printf(&trash, "\r\n000000\r\n");
-			if (bi_putchk(si->ib, &trash) == -1) {
-				si->ib->to_forward = last_fwd;
-				goto fail;
-			}
-		}
-
-		data_len = si->ib->buf->i;
 		if (stats_dump_stat_to_buffer(si, s->be->uri_auth))
 			appctx->st0 = STAT_HTTP_DONE;
-
-		last_len = si->ib->buf->i;
-
-		/* Now we must either adjust or remove the chunk size. This is
-		 * not easy because the chunk size might wrap at the end of the
-		 * buffer, so we pretend we have nothing in the buffer, we write
-		 * the size, then restore the buffer's contents. Note that we can
-		 * only do that because no forwarding is scheduled on the stats
-		 * applet.
-		 */
-		if (appctx->ctx.stats.flags & STAT_CHUNKED) {
-			si->ib->total  -= (last_len - prev_len);
-			si->ib->buf->i -= (last_len - prev_len);
-
-			if (last_len != data_len) {
-				chunk_printf(&trash, "\r\n%06x\r\n", (last_len - data_len));
-				bi_putchk(si->ib, &trash);
-
-				si->ib->total  += (last_len - data_len);
-				si->ib->buf->i += (last_len - data_len);
-			}
-			/* now re-enable forwarding */
-			channel_forward(si->ib, last_fwd);
-		}
 	}
 
 	if (appctx->st0 == STAT_HTTP_POST) {
@@ -4299,17 +4248,8 @@
 			appctx->st0 = STAT_HTTP_DONE;
 	}
 
-	if (appctx->st0 == STAT_HTTP_DONE) {
-		if (appctx->ctx.stats.flags & STAT_CHUNKED) {
-			chunk_printf(&trash, "\r\n0\r\n\r\n");
-			if (bi_putchk(si->ib, &trash) == -1)
-				goto fail;
-		}
-		/* eat the whole request */
-		bo_skip(si->ob, si->ob->buf->o);
-		res->flags |= CF_READ_NULL;
-		si_shutr(si);
-	}
+	if (appctx->st0 == STAT_HTTP_DONE)
+		si_shutw(si);
 
 	if ((res->flags & CF_SHUTR) && (si->state == SI_ST_EST))
 		si_shutw(si);
@@ -4321,7 +4261,6 @@
 		}
 	}
 
- fail:
 	/* update all other flags and resync with the other side */
 	si_update(si);
 
diff --git a/src/proto_http.c b/src/proto_http.c
index 259cc58..18da38f 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -2825,8 +2825,6 @@
 	appctx->st1 = appctx->st2 = 0;
 	appctx->ctx.stats.st_code = STAT_STATUS_INIT;
 	appctx->ctx.stats.flags |= STAT_FMT_HTML; /* assume HTML mode by default */
-	if ((msg->flags & HTTP_MSGF_VER_11) && (s->txn.meth != HTTP_METH_HEAD))
-		appctx->ctx.stats.flags |= STAT_CHUNKED;
 
 	uri = msg->chn->buf->p + msg->sl.rq.u;
 	lookup = uri + uri_auth->uri_len;
@@ -3643,7 +3641,7 @@
 			s->flags |= SN_FINST_R;
 
 		req->analyse_exp = TICK_ETERNITY;
-		req->analysers = AN_REQ_HTTP_XFER_BODY;
+		req->analysers = 0;
 		return 1;
 	}