Re: [quicwg/base-drafts] QPACK editorial revision (#2759)

Mike Bishop <> Thu, 20 June 2019 17:17 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 9F91D12014E for <>; Thu, 20 Jun 2019 10:17:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -8.009
X-Spam-Status: No, score=-8.009 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_DKIMWL_WL_HIGH=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id aEB4hbvrPD9w for <>; Thu, 20 Jun 2019 10:17:02 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id B111012011C for <>; Thu, 20 Jun 2019 10:17:02 -0700 (PDT)
Date: Thu, 20 Jun 2019 10:17:01 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=pf2014; t=1561051021; bh=+TYelUdK+2FwONLu6dXqW8TIPVFv94Hxv7qGHKXQLvA=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=OfwU+8uYNGkmv7kUNQLbVqIteK2bSQBc66uZzF/3ewivvZB2s6wJBscTnViEnwSPN IK+aNjgEHqb7XdIaVwUYVDXk1IsudD0RLPESmnyRXXLbpp/fPX8cH3MM6wiS510hIh kr1Y7VE6+ssoZn2WMU3mJwr6uZe7GviNe0fKxgWE=
From: Mike Bishop <>
Reply-To: quicwg/base-drafts <>
To: quicwg/base-drafts <>
Cc: Subscribed <>
Message-ID: <quicwg/base-drafts/pull/2759/review/>
In-Reply-To: <quicwg/base-drafts/pull/>
References: <quicwg/base-drafts/pull/>
Subject: Re: [quicwg/base-drafts] QPACK editorial revision (#2759)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5d0bbf8da28ca_3d733fb86facd96c250432"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: MikeBishop
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
Archived-At: <>
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 20 Jun 2019 17:17:13 -0000

MikeBishop commented on this pull request.

 ### State Synchronization
-The decoder instructions ({{decoder-instructions}}) signal key events at the
-decoder that permit the encoder to track the decoder's state.  These events are:
+The decoder signals the following key events by emitting decoder instructions
+({{decoder-instructions}}) on the decoder stream.
+#### Completed Processing of a Header Block
+When the decoder finishes decoding a header block containing dynamic table
+references, it emits a Header Acknowledgement instruction
+({{header-acknowledgement}}).  The same Stream ID can be identified by multiple
+Header Acknowledgement instructions, as multiple header blocks can be sent on a
+single stream in the case of intermediate responses, trailers, and pushed
+requests.  Since frames carrying header blocks on each stream are received and
+processed in order, this gives the encoder precise feedback on which header
+blocks within a stream have been fully processed.

Minor quibble with @LPardue's text:  That seems to imply that header blocks on the stream might *not* be completely processed in order.  Now, that's certainly possible to do (albeit not useful in most circumstances and not directly discussed in this doc), but acknowledgements always have to be in order here.

> +#### Abandonment of a Stream
+When an endpoint receives a stream reset before the end of a stream or before
+all header blocks are processed on that stream, or when it abandons reading of a
+stream, it generates a Stream Cancellation instruction (see
+{{stream-cancellation}}).  This signals to the encoder that all references to
+the dynamic table on that stream are no longer outstanding.  A decoder with a
+maximum dynamic table capacity equal to zero (see
+{{maximum-dynamic-table-capacity}}) MAY omit sending Stream Cancellations,
+because the encoder cannot have any dynamic table references.  An encoder cannot
+infer from this instruction that any updates to the dynamic table have been
+The Header Acknowledgement and Stream Cancellation instructions permit the
+encoder to evict entries to which no unacknowledged references remain (see

This wording feels weird.  Entries without unacknowledged references can always be evicted.  The instructions acknowledge the references themselves.

You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub: