BUG/MEDIUM: mux-h2: always omit :scheme and :path for the CONNECT method

This is mandated by RFC7540 #8.3, these pseudo-headers must not be emitted
with the CONNECT method.

This must be backported to 1.9.
diff --git a/src/mux_h2.c b/src/mux_h2.c
index 5fdaadf..1c6f3d2 100644
--- a/src/mux_h2.c
+++ b/src/mux_h2.c
@@ -4425,20 +4425,27 @@
 		goto full;
 	}
 
-	/* encode the scheme which is always "https" (or 0x86 for "http") */
-	if (!hpack_encode_scheme(&outbuf, ist("https"))) {
-		/* output full */
-		if (b_space_wraps(&h2c->mbuf))
-			goto realign_again;
-		goto full;
-	}
+	/* RFC7540 #8.3: the CONNECT method must have :
+	 *   - :authority set to the URI part (host:port)
+	 *   - :method set to CONNECT
+	 *   - :scheme and :path omitted
+	 */
+	if (sl->info.req.meth != HTTP_METH_CONNECT) {
+		/* encode the scheme which is always "https" (or 0x86 for "http") */
+		if (!hpack_encode_scheme(&outbuf, ist("https"))) {
+			/* output full */
+			if (b_space_wraps(&h2c->mbuf))
+				goto realign_again;
+			goto full;
+		}
 
-	/* encode the path, which necessarily is the second one */
-	if (!hpack_encode_path(&outbuf, path)) {
-		/* output full */
-		if (b_space_wraps(&h2c->mbuf))
-			goto realign_again;
-		goto full;
+		/* encode the path, which necessarily is the second one */
+		if (!hpack_encode_path(&outbuf, path)) {
+			/* output full */
+			if (b_space_wraps(&h2c->mbuf))
+				goto realign_again;
+			goto full;
+		}
 	}
 
 	/* encode all headers, stop at empty name */