Header compression, editorial

Martin Thomson <martin.thomson@gmail.com> Thu, 27 June 2013 17:48 UTC

Return-Path: <ietf-http-wg-request@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3016A21F9E82 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Thu, 27 Jun 2013 10:48:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.599
X-Spam-Level:
X-Spam-Status: No, score=-10.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pC1M4VmOJ5cN for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Thu, 27 Jun 2013 10:48:19 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com (Postfix) with ESMTP id 883E921F9A42 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Thu, 27 Jun 2013 10:48:19 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1UsGIN-0008JR-Ck for ietf-http-wg-dist@listhub.w3.org; Thu, 27 Jun 2013 17:47:47 +0000
Resent-Date: Thu, 27 Jun 2013 17:47:47 +0000
Resent-Message-Id: <E1UsGIN-0008JR-Ck@frink.w3.org>
Received: from lisa.w3.org ([128.30.52.41]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <martin.thomson@gmail.com>) id 1UsGI8-0008HZ-M9 for ietf-http-wg@listhub.w3.org; Thu, 27 Jun 2013 17:47:32 +0000
Received: from mail-wg0-f53.google.com ([74.125.82.53]) by lisa.w3.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.72) (envelope-from <martin.thomson@gmail.com>) id 1UsGI6-0001v1-Qm for ietf-http-wg@w3.org; Thu, 27 Jun 2013 17:47:32 +0000
Received: by mail-wg0-f53.google.com with SMTP id y10so820935wgg.8 for <ietf-http-wg@w3.org>; Thu, 27 Jun 2013 10:47:04 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=u1yDW/BqENrA98wn1G193ZZr8kDcQbVPMUFu8juVyuU=; b=qlJH0SHD1U9a9Mi56bOWv0BGqwFQH+sZQXhI/Q4f2eTT+0ai27rAIgQymb19Uz3bUo bhW70/BaNdoEUYWqnLjmfsdPSiClbeIbHrpqXtcx2+JzIWqJtgKd8Wz5fY7oIax1j4Hn AFS2EU482ugKwgY4fxrw9iNE92qiin0jr88lgVzG6+koQCtg42bVmXxFlm6uo8qJji0t KmW2y9nN/VRAgQMzsIPX73FAiXx92Gq29PVTYOz8J60B3EsZcbA2J52AFLToh2g30f67 BmDdAnzelZYIiVp78PQRVbmpXnaUC1BDuIASj5kpQu30EbuWzhCIavGYkgbYZ6xGAyWD MpsA==
MIME-Version: 1.0
X-Received: by 10.180.9.212 with SMTP id c20mr204701wib.65.1372355224680; Thu, 27 Jun 2013 10:47:04 -0700 (PDT)
Received: by 10.194.60.46 with HTTP; Thu, 27 Jun 2013 10:47:04 -0700 (PDT)
Date: Thu, 27 Jun 2013 10:47:04 -0700
Message-ID: <CABkgnnWSeE3GnPzkM3DfXRcPh3rW_U9f==Nnv-aTmn_WLkBFKQ@mail.gmail.com>
From: Martin Thomson <martin.thomson@gmail.com>
To: HTTP Working Group <ietf-http-wg@w3.org>
Content-Type: text/plain; charset="UTF-8"
Received-SPF: pass client-ip=74.125.82.53; envelope-from=martin.thomson@gmail.com; helo=mail-wg0-f53.google.com
X-W3C-Hub-Spam-Status: No, score=-3.5
X-W3C-Hub-Spam-Report: AWL=-2.682, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001
X-W3C-Scan-Sig: lisa.w3.org 1UsGI6-0001v1-Qm 3fa8cc592a0ad389ea9328b66255316d
X-Original-To: ietf-http-wg@w3.org
Subject: Header compression, editorial
Archived-At: <http://www.w3.org/mid/CABkgnnWSeE3GnPzkM3DfXRcPh3rW_U9f==Nnv-aTmn_WLkBFKQ@mail.gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/18396
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <http://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

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--