mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-11-24 04:11:02 +01:00
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
This commit is contained in:
parent
852d78c232
commit
4ca0f363a1
5
src/h2.c
5
src/h2.c
@ -31,6 +31,7 @@
|
||||
#include <haproxy/h2.h>
|
||||
#include <haproxy/http-hdr-t.h>
|
||||
#include <haproxy/http.h>
|
||||
#include <haproxy/http_htx.h>
|
||||
#include <haproxy/htx.h>
|
||||
#include <import/ist.h>
|
||||
|
||||
@ -553,6 +554,10 @@ int h2_make_htx_request(struct http_hdr *list, struct htx *htx, unsigned int *ms
|
||||
if (!htx_add_endof(htx, HTX_BLK_EOH))
|
||||
goto fail;
|
||||
|
||||
/* proceed to scheme-based normalization on target-URI */
|
||||
if (fields & H2_PHDR_FND_SCHM)
|
||||
http_scheme_based_normalize(htx);
|
||||
|
||||
ret = 1;
|
||||
return ret;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user