| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-05-10 | 1.6 kB | |
| v0.44.0 source code.tar.gz | 2026-05-10 | 1.9 MB | |
| v0.44.0 source code.zip | 2026-05-10 | 2.1 MB | |
| Totals: 3 Items | 3.9 MB | 0 | |
What's Changed
Breaking change (behavioral)
- Stop percent-decoding HTTP request header values.
parse_header()previously applieddecode_path_component()to every header value (exceptLocation/Referer) afteris_field_value()validation, so wire sequences like%0D%0Apassed validation and expanded into literal CR/LF inside stored values — enabling response splitting, log injection, and proxy smuggling.%3D/%2C/%3Blikewise flippedCookieandX-Forwarded-Forboundaries against WAFs inspecting the wire form. RFC 9110 §5.5 specifies header values as opaque octets, so the auto-decode (and theLocation/Refererworkarounds for the same misbehavior) has been removed. Applications that need URI semantics on a header value should now calldecode_uri_component()ordecode_path_component()on the result explicitly. Fixes the long-standingReferer-with-%0Aissue (#2033) (fbb031e)
Bug fixes
- Make
ThreadPoolconstructor exception-safe on partial thread creation. Ifstd::threadconstruction throws partway through (e.g.pthread_createreturnsEAGAINunder thread-resource pressure), the partially-builtthreads_vector would destruct joinablestd::threadobjects and callstd::terminate(). The spawn loop now signals shutdown to the workers already created, joins them, and rethrows. Fix [#2444] (#2445)
Tooling
scripts/release.shgains a--minorflag to force a minor bump even whenabidiffreports no ABI break, for behavioral breaking changes like the header-decoding fix above (e8e6528)