Subject: Header compression, editorial

From: Martin Thomson <[email-masked]>
Date: Thu, 27 Jun 2013 10:47:04 -0700

Rereading this without my preconception glasses on, I realized
something.  The subsections of Section 4.4 don't clearly identify what
each command actually does.  The reader is left to infer what each
does.  The content of the fields is also hidden beneath details of
wire encoding.

These sections should be very clear on the purpose of each.

e.g.
--8<--
4.4.1 Literal Header without Indexing

This instruction adds a header to the working set without modifying
the header table.

The instruction includes a header name and value.  The header name is
provided either as a string literal (see Section 4.2.2), or by
referencing a header table entry.

// The pictures here aren't particularly useful either because they
don't include the entire "instruction" or whatever it is that you want
to call these things.  The following structure would make this a lot
more readable:

[0 1 1] [(5-bit prefix integer) index]
[(string, conditional) header name]
[(string) header value]

A literal header without indexing starts with the bit sequence 011,
followed by a index, which is encoded as an integer with a 5-bit
prefix (see Section 4.2.1).

A value of 0 for the index indicates that the header name is provided
as a literal string.

A non-zero value for the index is reduced by one and used as a
reference into the header table.  The header name field is not
included if the index is non-zero.

A header value is always included, and is encoded as a string literal.
-->8--