You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Critical fixes (17 resolved):
- Header.add()/set() now return errors on overflow instead of
silent header drops that could lose Content-Length/Authorization
- Remove unsafe mutation of immutable request during 303 redirects;
use local effective_data variable instead of UB cast
- set_custom() iterates only populated header slots (cur_pos), not
the full 50-element fixed array
- Server worker threads receive channel close signal on shutdown
instead of leaking permanently
- HTTP/2 stream state violations now return PROTOCOL_ERROR per
RFC 7540 §5.1, not silently ignored log messages
- HTTP/2 stream ID overflow check (>0x7FFFFFFF) prevents reuse
- Connection pool evicts stale/closed connections before returning
- QUIC RAND_bytes failure detected with arc4random fallback
- QUIC timestamps use monotonic clock (sys_mono_now) instead of
wall clock that drifts with NTP/DST corrections (6 occurrences)
- Negative offset/length bounds check in QUIC stream data events
High fixes (12 resolved):
- Retry loops return explicit max-retries error, not misleading
"unsupported scheme"
- Body boundary detection uses >= 0 (not > 0) for position check
- URL params properly encoded with query_escape in fetch()
- HTTP/2 unknown SETTINGS return Option (none) per RFC 7540 §6.5.2
- encode_optimized adds never-indexed check for sensitive headers
(authorization, cookie) preventing intermediary indexing
- ConnectionPool.size() acquires mutex for thread safety
- Extension HTTP methods (PROPFIND, BREW) no longer rejected
- IPv6 address parsing supports bracket notation [::1]:port
- README Quick Start examples rewritten to match actual API
- Empty/println-only QUIC tests replaced with real assertions
- Certificate generation command fixed (separate key.pem/cert.pem)
0 commit comments