0.6.0 — audit-driven security and concurrency hardening
Security + concurrency hardening pass from a multi-agent audit. Bundles eight PRs (#2-#10).
Headlines
- Critical: CONTINUATION-flood byte cap,
controlling_processowner monitor. - High:
send_frameerror propagation, HPACK table cap, send-buffer cap,set_stream_handlerdefault flip,handle_send_datayielding, acceptor EXIT mailbox drain, TLS server hardening. - Medium: default
max_concurrent_streams = 100,logger:error/2migration, setting_id dedup, SETTINGS_ACK state preservation,safe_pathhardening,cancel_streamdeprecation. - Low/Info:
set_activeerror handling,peel_reasonrecursive,cancel_timerflush,=:=consistency,?DEFAULT_TIMEOUT_MSconstant.
Breaking notes
set_stream_handler/3,4default flipped (drain_buffer => false); the connection replays buffered DATA frames itself.send_data/3,4may return{error, send_buffer_full}when the peer stalls its receive window.cancel_stream/2,3is-deprecated; usecancel/2,3.- Default
SETTINGS_MAX_CONCURRENT_STREAMS = 100(wasunlimited). - TLS server:
verify_peerwithoutcacertsnow fails fast with{error, verify_peer_requires_cacerts}.
Full changelog: https://github.com/benoitc/erlang_h2/blob/0.6.0/CHANGELOG.md