[BUG] fix recently introduced loop when client closes early

Due to a recent change in the FSMs, if the client closes with buffer
full, then the server loops waiting for headers. We can safely ignore
this case since the server FSM will have to be reworked too. Let's
fix the root cause for now.
diff --git a/src/proto_http.c b/src/proto_http.c
index 34850c9..e323b1d 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -1564,7 +1564,8 @@
 	struct buffer *rep = t->rep;
 	int fsm_resync = 0;
 
-	DPRINTF(stderr,"process_req: c=%s s=%s set(r,w)=%d,%d exp(r,w)=%u,%u req=%08x rep=%08x analysis=%02x\n",
+	DPRINTF(stderr,"[%u] process_req: c=%s s=%s set(r,w)=%d,%d exp(r,w)=%u,%u req=%08x rep=%08x analysis=%02x\n",
+		now_ms,
 		cli_stnames[t->cli_state], srv_stnames[t->srv_state],
 		EV_FD_ISSET(t->cli_fd, DIR_RD), EV_FD_ISSET(t->cli_fd, DIR_WR),
 		req->rex, rep->wex, req->flags, rep->flags, t->analysis);
@@ -2515,7 +2516,8 @@
 	struct buffer *req = t->req;
 	struct buffer *rep = t->rep;
 
-	DPRINTF(stderr,"process_cli: c=%s s=%s set(r,w)=%d,%d exp(r,w)=%u,%u req=%08x rep=%08x\n",
+	DPRINTF(stderr,"[%u] process_cli: c=%s s=%s set(r,w)=%d,%d exp(r,w)=%u,%u req=%08x rep=%08x\n",
+		now_ms,
 		cli_stnames[t->cli_state], srv_stnames[t->srv_state],
 		EV_FD_ISSET(t->cli_fd, DIR_RD), EV_FD_ISSET(t->cli_fd, DIR_WR),
 		req->rex, rep->wex,
@@ -2711,7 +2713,8 @@
 	struct buffer *rep = t->rep;
 	int conn_err;
 
-	DPRINTF(stderr,"process_srv: c=%s s=%s set(r,w)=%d,%d exp(r,w)=%u,%u req=%08x rep=%08x\n",
+	DPRINTF(stderr,"[%u] process_srv: c=%s s=%s set(r,w)=%d,%d exp(r,w)=%u,%u req=%08x rep=%08x\n",
+		now_ms,
 		cli_stnames[t->cli_state], srv_stnames[t->srv_state],
 		EV_FD_ISSET(t->srv_fd, DIR_RD), EV_FD_ISSET(t->srv_fd, DIR_WR),
 		rep->rex, req->wex,
@@ -3142,9 +3145,11 @@
 			 * The side-effect is that if the client completely closes its
 			 * connection during SV_STHEADER, the connection to the server
 			 * is kept until a response comes back or the timeout is reached.
+			 * This sometimes causes fast loops when the request buffer is
+			 * full, so we still perform the transition right now. It will
+			 * make sense later anyway.
 			 */
-			else if (0 && /* we don't want to switch to shutw for now */
-				 unlikely(req->flags & BF_SHUTR_STATUS && (req->l == 0))) {
+			else if (unlikely(req->flags & BF_SHUTR_STATUS && (req->l == 0))) {
 
 				EV_FD_CLR(t->srv_fd, DIR_WR);
 				buffer_shutw_done(req);