MINOR: mux-h1: Process conn_mode on the EOH when no connection header is found

Instead of looking for a connection header just after the start line to know if
we must process the conn_mode by hand or if we wait to parse the connection
header, we now delay this processing when the end of headers is reached. A flag
is used to know if it was already done (or skipped) or not. This save a lookup
on headers.
diff --git a/src/mux_h1.c b/src/mux_h1.c
index 4620c64..b350e06 100644
--- a/src/mux_h1.c
+++ b/src/mux_h1.c
@@ -1217,6 +1217,7 @@
 	struct htx_blk *blk;
 	struct buffer *tmp;
 	size_t total = 0;
+	int process_conn_mode = 1; /* If still 1 on EOH, process the connection mode */
 	int errflag;
 
 	if (!count)
@@ -1276,32 +1277,13 @@
 					goto copy;
 				if (sl->flags & HTX_SL_F_XFER_LEN)
 					h1m->flags |= H1_MF_XFER_LEN;
+				if (sl->info.res.status < 200 &&
+				    (sl->info.res.status == 100 || sl->info.res.status >= 102))
+					process_conn_mode = 0;
 				h1m->state = H1_MSG_HDR_FIRST;
 				break;
 
 			case HTX_BLK_HDR:
-				if (h1m->state == H1_MSG_HDR_FIRST) {
-					struct http_hdr_ctx ctx;
-
-					n = ist("Connection");
-					v = ist("");
-
-					/* If there is no "Connection:" header,
-					 * process conn_mode now and add the
-					 * right one.
-					 */
-					ctx.blk = blk;
-					ctx.value = ist(NULL);
-					if (http_find_header(chn_htx, n, &ctx, 1))
-						goto process_hdr;
-					h1_process_conn_mode(h1s, h1m, NULL, &v);
-					if (!v.len)
-						goto process_hdr;
-
-					if (!htx_hdr_to_str(n, v, tmp))
-						goto copy;
-				}
-			  process_hdr:
 				h1m->state = H1_MSG_HDR_NAME;
 				n = htx_get_blk_name(chn_htx, blk);
 				v = htx_get_blk_value(chn_htx, blk);
@@ -1311,6 +1293,7 @@
 				else if (isteqi(n, ist("connection"))) {
 					h1_parse_connection_header(h1m, v);
 					h1_process_conn_mode(h1s, h1m, NULL, &v);
+					process_conn_mode = 0;
 					if (!v.len)
 						goto skip_hdr;
 				}
@@ -1327,6 +1310,19 @@
 				break;
 
 			case HTX_BLK_EOH:
+				if (h1m->state == H1_MSG_HDR_L2_LWS && process_conn_mode) {
+					/* There is no "Connection:" header and
+					 * it the conn_mode must be
+					 * processed. So do it */
+					n = ist("Connection");
+					v = ist("");
+					h1_process_conn_mode(h1s, h1m, NULL, &v);
+					process_conn_mode = 0;
+					if (v.len) {
+						if (!htx_hdr_to_str(n, v, tmp))
+							goto copy;
+					}
+				}
 				h1m->state = H1_MSG_LAST_LF;
 				if (!chunk_memcat(tmp, "\r\n", 2))
 					goto copy;