The C Anti State HPACK library

cashpack logo

Possibly my best digression to date. Less than a year after joining Varnish Software our CTO informed me that I had volunteered to add HTTP/2 support to Varnish’s test framework. So I started reading IETF’s RFC7540 and realized that it was completed by other RFCs and as I was later reading RFC7541 it struck me:

HTTP/2 in general challenges Varnish’s architecture initially tailored for HTTP/1.x but HPACK’s dynamic table is going to be very problematic.

So instead of working actively on the test framework I wrote this digressive research project trying to reconcile HPACK’s dynamic table with Varnish’s static allocations.

Even when I was done I dialed the digression up to eleven and pushed the research project further and further. Including but not limited to a comprehensive test coverage (100%, no less, for both the HPACK protocol and the cashpack code) the ability to build and test with a range of quality tools, using the same test suite to test other HPACK implementations. The list goes on…

Eventually it caught the attention of one of the senior developers of the core team (that might be related to the fact that I presented cashpack to the team at some point) and since I accidentally used the same license some bits and pieces got rewritten and the rest was imported in Varnish. In particular, the generic API of the library was thrown away in favor of something tailored for Varnish.

And yes, I took the time to think hard about a logo and managed to make a cool one (or so I’m told) with very limited graphical skills \o/

Source code: