HTTP/2 C library and tools

Nghttp2 v0.7.5

We released nghttp2 v0.7.5. This release still uses h2-14 identifier in library code, but h2-14 through to final draft version is binary compatible and nghttp2 supports all features in the latest draft.

In this release, we implemented validation against HTTP Messaging semantics described in HTTP/2 draft, section 8.. We do not perform all the checks described in that section, but this time we implemented basic and fundamental checks which makes application code much cleaner. This validation pretty much restricts nghttp2 library to HTTP/2 use only. For those applications to use nghttp2 as non-http use case, use nghttp2_option_set_no_http_messaging() to disable this feature. For more detailed information about this subject, see the manual.

Previously, in verbose output of nghttp, nghttpd and nghttpx, we show “noind=1” if header field is encoded in HPACK Never Indexed representation. Now it is shown as “sensitive” to make its meaning more clearer. Other implementations use the same wording.

nghttpd got new option -a, --address=<ADDR> that allows nghttpd to bind to a non-default address. This feature was contributed by Brian Card.

In the previous release, we updated nghttp --stat option. Now we make its terminology and processing model to match those in Resource Timing TR.

Let’s talk about nghttpx proxy server. It now supports UNIX domain socket for both frontend and backend. We omitted minor version in Via header field and access logging if HTTP version is HTTP/2. We fixed the bug that nghttpx crashes if it receives more bytes than Content-Length from HTTP/1 backend.

We fixed asio-sv2 so that it compiles under OS X.

And finally as we know HTTP/2 specification was approved by IETF, we now announce h2 ALPN ID in nghttp, nghttpd, nghttpx and h2load!

For future release plan, we continue to develop nghttp2 in 0.7 series until HTTP/2 RFC is published. After RFC publication we’ll finally release version 1.0.0.