We released nghttp2 v1.10.0.
This release adds ALTSVC frame support in libnghttp2. nghttp gets new option to exercise expect/continue dance with server. nghttpx gets several new features, robust load balancing, and bug fixes.
ALTSVC frame support, and enchanced HTTP/2 extension support
ALTSVC frame is defined in
RFC 7838. nghttp2’s ALTSVC
frame support is very simple, and it does not parse
Alt-Svc-Field-Value, and it just passes the received value to the
application. This is because ALTSVC aware application most likely has
a parser for this since ALTSVC can be sent via regular HTTP header
By default, incoming ALTSVC frame is ignored. To receive ALTSVC
nghttp2_option object, and use
and pass the object to the
nghttp2_session_client_new3(). Note that server always ignores
ALTSVC regardless of the option settings.
To send ALTSVC frame, use
nghttp2 has introduced custom frame support in v1.8.0. So you can create your own ALTSVC handling if you wish.
Previously, we didn’t pass unknown incoming SETTINGS value to the
application. Now those values are also passed to the application via
nghttp : expect/continue exercises
Jacob Champion has implemented expect/continue dance with server in
nghttp client. With new
--expect-continue option, nghttp briefly
waits for 100-continue from server before sending request body.
HTTP/2 has flow control, and it is regarded as better feature for
this, but this new option is useful to debug the server’s
expect/continue feature since it is still supported by HTTP/2.
nghttpx: better load balancing, and bug fixes
Brian Suh fixed the bug that nghttpx returned 502 on FreeBSD (and possibly Mac OS X).
nghttpx now has the feature to detect the backend is online or
--backend option now gets additional parameter
fall=<N> specifies that if the
backend cannot be connected in
<N> times in a row, it is considered
as offline, and excluded from load balancing group. The
specifies that if nghttpx can connect to the offline backend in
times in a row, the backend is considered as online, and it is
eligible for load balancing again. By default, these feature are
disabled, and backend never be excluded from load balancing group.
Previously, when nghttpx could not connect to the one of backend, it did not use another backend, and just returns 5xx status code. Now it tries another backends in case of connect failure.
We fixed the bug that server push from mruby script did not work.
The server push using Link header field is extended, and now nghttpx can push resources using Link header field in non-final(1xx) response header fields from backend server.