Re: [quicwg/base-drafts] allow PRIORITY frames referring to placeholders exceeding `SETTING_NUM_PLACEHOLDERS` (#2761)

Kazuho Oku <> Thu, 06 June 2019 00:57 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 6F7461200C5 for <>; Wed, 5 Jun 2019 17:57:50 -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 4oFJkFjzTxQk for <>; Wed, 5 Jun 2019 17:57:48 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id E7FA3120025 for <>; Wed, 5 Jun 2019 17:57:47 -0700 (PDT)
Date: Wed, 05 Jun 2019 17:57:46 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=pf2014; t=1559782666; bh=fFT+2gXOVnGHcQRjg9Bb4IzVJbU03yMfH+qDUJ74YuU=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=ByT5ViphufsKSiucomHwJmiYVG8rAraRS67FUXKJFANkoes7DUBW/4Q9B7Itf9m9I AQvlGu+YxyOnD5sWnBcRnfvAaLLXoQpovdDshFFSqgL3FoFRWDsb3nGpf3PfQV/9Iy K9pLxW7uSCw1H9ZWDjYpcS9OYUINWmeFhIBATxD4=
From: Kazuho Oku <>
Reply-To: quicwg/base-drafts <>
To: quicwg/base-drafts <>
Cc: Subscribed <>
Message-ID: <quicwg/base-drafts/pull/2761/review/>
In-Reply-To: <quicwg/base-drafts/pull/>
References: <quicwg/base-drafts/pull/>
Subject: Re: [quicwg/base-drafts] allow PRIORITY frames referring to placeholders exceeding `SETTING_NUM_PLACEHOLDERS` (#2761)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5cf8650a7fe27_257d3fcd9f2cd95c11777f"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: kazuho
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, 06 Jun 2019 00:57:50 -0000

kazuho commented on this pull request.

> @@ -1202,9 +1202,17 @@ The following situations are examples of invalid PRIORITY frames:
 A PRIORITY frame with Empty bits not set to zero MAY be treated as a connection
 error of type HTTP_MALFORMED_FRAME.
-A PRIORITY frame that references a non-existent Push ID, a Placeholder ID
-greater than the server's limit, or a Stream ID the client is not yet permitted
-to open MUST be treated as a connection error of type HTTP_LIMIT_EXCEEDED.
+A PRIORITY frame that references a non-existent Push ID, or a Stream ID the
+client is not yet permitted to open MUST be treated as a connection error of
+A PRIORITY frame MAY reference a Placeholder ID that is equal to or greater than
+the server's advertised value of the `SETTINGS_NUM_PLACEHOLDERS` settings.  When
+receiving a PRIORITY frame with its prioritized element set to such a
+placeholder, the server SHOULD discard the frame without making any change to
+the priority tree.  When receiving a PRIORITY frame with its element dependency
+set to such a placeholder, the server SHOULD update the priority tree with the
+root of the tree being the dependency instead.

I agree that this is debatable.

The reason I've chosen "root" as the starting point of this PR is because it is the behavior defined in HTTP/2; I think we should try to retain similarity if possible (unless / until we decide to adopt a very different design). Note that orphan placeholder is still useful regardless of this; the placeholder minimizes the negative impact when PRIORITY frames on the control stream gets lost.

Hopefully, this point becomes a less of an issue once we recommend some sensible minimum for SETTINGS_NUM_PLACEHOLDERS; essentially guiding servers to support either none or at least 32 (or something alike).

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