We released nghttp2 v1.14.0. We summarizes the changes below per category.
Wenfeng Liu contributed several commits to mainly HPACK related code.
Most notably, Wenfeng added
which can takes multiple output buffers to encode HTTP header fields,
in a same spirit of
writev(2). Wenfeng also cleaned up source code,
and added optimizations.
nghttp2_on_invalid_header_callback to pass the invalid
header fields to application. We say header field is invalid if it
contains a character which is now allowed in header field.
Previously, libnghttp2 silently ignored them. Now application can use
this callback to catch these header fields, and it can reset a stream
if it wishes.
HTTP/2 priority handling is complex thing, but we fixed a bug that libnghttp2 performs wrong tree operation to avoid dependency cycle. https://tools.ietf.org/html/rfc7540#section-5.3.3 explains how to transform dependency tree to avoid circular dependency. Previously, we wrongly always moved the dependent stream under the root stream. The correct destination is the parent stream of the stream to reprioritize. This is not a security bug.
We have deprecated
which was defined as INT32_MAX. Actually, the SETTINGS value can
contain 32 bit unsigned integer, it is not really an initial value.
We think deprecation does not affect most of the application, since
typically they requires much lower concurrent stream limit (say, 100).
We have tightened up stream state handling for server side session, and now nghttpx and nghttpd can pass all h2spec tests with strict mode enabled.
We removed old documentation about HPACK differential coding. It was removed when we ditched reference set from HPACK specification.
We also mention about ALPN support in nghttpx HOW-TO.
We have got several bug report about the issue that the backend connection cannot be established. We added several WARN level log messages to debug this situation easier.
nghttpx can now log the backend host and port in access log file. See
--accesslog-format option for more details.
We have fixed the bug that
healthmon parameter do not work
nghttpx now reloads configuration file when it receives
nghttp now accepts multiple
-p option to set weight for
corresponding URI in command-line.
We fixed it so that it only emits dynamic header table size update when header table size is changed from default.