MINOR: h1: add H1_MF_TOLOWER to decide when to turn header names to lower case

The h1 parser used to systematically turn header field names to lower
case because it was designed for H2. Let's add a flag which is off by
default to condition this behaviour so that when using it from an H1
parser it will not affect the message.
diff --git a/include/types/h1.h b/include/types/h1.h
index ec8cca0..2dd58dd 100644
--- a/include/types/h1.h
+++ b/include/types/h1.h
@@ -139,6 +139,7 @@
 #define H1_MF_CLEN              0x00000001 // content-length present
 #define H1_MF_CHNK              0x00000002 // chunk present, exclusive with c-l
 #define H1_MF_RESP              0x00000004 // this message is the response message
+#define H1_MF_TOLOWER           0x00000008 // turn the header names to lower case
 
 
 /* basic HTTP/1 message state for use in parsers. The err_pos field is special,
diff --git a/src/h1.c b/src/h1.c
index db71789..47af9be 100644
--- a/src/h1.c
+++ b/src/h1.c
@@ -1082,7 +1082,7 @@
 		/* assumes sol points to the first char */
 		if (likely(HTTP_IS_TOKEN(*ptr))) {
 			/* turn it to lower case if needed */
-			if (isupper((unsigned char)*ptr))
+			if (isupper((unsigned char)*ptr) && h1m->flags & H1_MF_TOLOWER)
 				*ptr = tolower(*ptr);
 			EAT_AND_JUMP_OR_RETURN(ptr, end, http_msg_hdr_name, http_msg_ood, state, H1_MSG_HDR_NAME);
 		}
@@ -1231,11 +1231,11 @@
 				h1m->flags |= H1_MF_CLEN;
 				h1m->curr_len = h1m->body_len = 0;
 			}
-			else if (isteq(n, ist("transfer-encoding"))) {
+			else if (isteqi(n, ist("transfer-encoding"))) {
 				h1m->flags &= ~H1_MF_CLEN;
 				h1m->flags |= H1_MF_CHNK;
 			}
-			else if (isteq(n, ist("content-length")) && !(h1m->flags & H1_MF_CHNK)) {
+			else if (isteqi(n, ist("content-length")) && !(h1m->flags & H1_MF_CHNK)) {
 				h1m->flags |= H1_MF_CLEN;
 				strl2llrc(v.ptr, v.len, &cl);
 				h1m->curr_len = h1m->body_len = cl;
diff --git a/src/mux_h2.c b/src/mux_h2.c
index 9205c2f..780bc57 100644
--- a/src/mux_h2.c
+++ b/src/mux_h2.c
@@ -694,6 +694,7 @@
 	h2s->rxbuf     = BUF_NULL;
 	h1m_init_res(&h2s->h1m);
 	h2s->h1m.err_pos = -1; // don't care about errors on the response path
+	h2s->h1m.flags |= H1_MF_TOLOWER;
 	h2s->by_id.key = h2s->id = id;
 	h2c->max_id    = id;
 
@@ -3239,6 +3240,7 @@
 		/* we'll let the caller check if it has more headers to send */
 		h1m_init_res(h1m);
 		h1m->err_pos = -1; // don't care about errors on the response path
+		h2s->h1m.flags |= H1_MF_TOLOWER;
 		goto end;
 	}