HTTP/2 C library and tools

Nghttp2 v0.7.9

We released nghttp2 v0.7.9.

This release fixes corrupted header fields in PUSH_PROMISE issued by nghttpx. The bug that h2load crashes if the number of thread given in -t is greater than the number of client given in -c has also been fixed. For examples, the bug that system header location has precedence over in-package header files has been fixed.

nghttp and nghttpd get new option --hexdump, which hexdumps incoming traffic, similar format as hexdump -C. It could be useful for further debugging.

h2load gets -d option to upload data to server. With this option, h2load now can load test gRPC server (probably unary RPC only?). For example, suppose we are going to load test gRPC greeter_server contained in grpc-common/cpp/helloworld. We have to add following 2 header fields to mimic gRPC request: “te: trailers” and “content-type: application/grpc”. We captured gRPC request body from greeter_client and wrote it in file called grpc-upload. For this particular request body, you can create this file using following python script:

with open('grpc-upload', 'w') as f: f.write(d)

The final command-line code is something like this:

$ h2load http://localhost:50051/helloworld.Greeter/SayHello \
      -d grpc-upload \
      -H 'te: trailers'
      -H 'content-type: application/grpc'
      -n1000000 -c100 -m100