url-parse-nginx
===============
This product includes software developed by Igor Sysoev and Nginx, Inc.:
nginx — https://nginx.org/
Copyright (C) 2002-2021 Igor Sysoev
Copyright (C) 2011-2026 Nginx, Inc.
Licensed under the 2-clause BSD license (see LICENSE).
Provenance of nginx-derived code
--------------------------------
url-parse-nginx exists to reproduce nginx's URL path normalization exactly.
It is therefore a derivative work of nginx and reuses nginx source as follows:
* src/lib.rs
A close, 1-to-1 Rust port of two functions from nginx's
src/http/ngx_http_parse.c:
- ngx_http_parse_uri()
- ngx_http_parse_complex_uri()
and the `usual[]` character bitmap. The control flow, state machine, and
the `usual[]` table values are taken directly from nginx.
* nginx-reference/nginx_url.c
Contains VERBATIM copies of `usual[]`, ngx_http_parse_uri(), and
ngx_http_parse_complex_uri() from the same nginx source file, plus a thin
authored wrapper. This file is generated by nginx-reference/tools/extract.sh,
which downloads a pinned official nginx release from nginx.org (version and
sha256 are pinned in that script) and extracts the regions verbatim. It is
used only by the differential fuzzer, not by the published library.
The pinned nginx version used to generate the vendored C is recorded in
nginx-reference/tools/extract.sh (NGINX_VERSION) and in the header comment of
nginx-reference/nginx_url.c.
Because nginx is licensed under the 2-clause BSD license, the whole of
url-parse-nginx is distributed under that same license. See LICENSE for the
full text and the retained nginx copyright notice.