MEDIUM: h2: apply scheme-based normalization on h2 requests
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 7 Jul 2021 08:49:28 +0000 (10:49 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Wed, 7 Jul 2021 13:34:01 +0000 (15:34 +0200)
commit4ca0f363a18597bcc1e776bdadae0cb2b1824482
treefce8ce0540aed32a2abe2140b7c97f832145e4d0
parent852d78c23280729295aedebfd3d5b9ee72f7d07a
MEDIUM: h2: apply scheme-based normalization on h2 requests

Apply the rfc 3986 scheme-based normalization on h2 requests. This
process will be executed for most of requests because scheme and
authority are present on every h2 requests, except CONNECT. However, the
normalization will only be applied on requests with defaults http port
(http/80 or https/443) explicitly specified which most http clients
avoid.

This change is notably useful for http2 websockets with Firefox which
explicitly specify the 443 default port on Extended CONNECT. In this
case, users can be trapped if they are using host routing without
removing the port. With the scheme-based normalization, the default port
will be removed.

To backport this change, it is required to backport first the following
commits:
* MINOR: http: implement http_get_scheme
* MEDIUM: http: implement scheme-based normalization
src/h2.c