]> git.kaiwu.me - nginx.git/commit
Fixed parsing of absolute URIs with empty path (ticket #2079).
authorMaxim Dounin <mdounin@mdounin.ru>
Thu, 10 Dec 2020 17:09:30 +0000 (20:09 +0300)
committerMaxim Dounin <mdounin@mdounin.ru>
Thu, 10 Dec 2020 17:09:30 +0000 (20:09 +0300)
commitce9971b2b5c14982afede89635508334938ac520
tree75d159374284c79ce9c1343f21279b0f701385f7
parente62a5132ca6ab74f324bf46fe91ee89e1951578c
Fixed parsing of absolute URIs with empty path (ticket #2079).

When the request line contains request-target in the absolute-URI form,
it can contain path-empty instead of a single slash (see RFC 7230, RFC 3986).
Previously, the ngx_http_parse_request_line() function only accepted empty
path when there was no query string.

With this change, non-empty query is also correctly handled.  That is,
request line "GET http://example.com?foo HTTP/1.1" is accepted and results
in $uri "/" and $args "foo".

Note that $request_uri remains "?foo", similarly to how spaces in URIs
are handled.  Providing "/?foo", similarly to how "/" is provided for
"GET http://example.com HTTP/1.1", requires allocation.
src/http/ngx_http_parse.c
src/http/ngx_http_request.c
src/http/ngx_http_request.h