Re: [quicwg/base-drafts] Remove DUPLICATE_PUSH and allow duplicate PUSH_PROMISE (#3309)

Ryan Hamilton <> Fri, 10 January 2020 18:16 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 81841120BBC for <>; Fri, 10 Jan 2020 10:16:18 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -8
X-Spam-Status: No, score=-8 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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] 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 M7UEB_f0nerw for <>; Fri, 10 Jan 2020 10:16:17 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id ED81E120BB1 for <>; Fri, 10 Jan 2020 10:16:16 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id 042E52C0E76 for <>; Fri, 10 Jan 2020 10:16:16 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=pf2014; t=1578680176; bh=iU10LkotlJs8gzRQL378m4icW22Qg6cp7fj5ss4mZz4=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=SExi54C7tDdcmokGtTOvMCXoApOP/S97DLFHuizDGxNJ4M2qiO2493m1mgF67yDiz PhXcH3ChJQovAF7fTjuuXXKb8zCUzF7a2CDgJBYVG3T5Hfu5oHeP4GpHm5uHJN/bGD Eh4Bpr9W7CMIeq1+Fe1qDrHphQYkKo1WfvDkDwc8=
Date: Fri, 10 Jan 2020 10:16:15 -0800
From: Ryan Hamilton <>
Reply-To: quicwg/base-drafts <>
To: quicwg/base-drafts <>
Cc: Subscribed <>
Message-ID: <quicwg/base-drafts/pull/3309/review/>
In-Reply-To: <quicwg/base-drafts/pull/>
References: <quicwg/base-drafts/pull/>
Subject: Re: [quicwg/base-drafts] Remove DUPLICATE_PUSH and allow duplicate PUSH_PROMISE (#3309)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5e18bf6fe943e_27cb3ffb800cd96818155"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: RyanAtGoogle
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: Fri, 10 Jan 2020 18:16:22 -0000

RyanAtGoogle commented on this pull request.

> @@ -1238,9 +1232,20 @@ MAX_PUSH_ID frame ({{frame-max-push-id}}). A client MUST treat receipt of a
 PUSH_PROMISE frame that contains a larger Push ID than the client has advertised
 as a connection error of H3_ID_ERROR.
-A server MUST NOT use the same Push ID in multiple PUSH_PROMISE frames. A client
-MUST treat receipt of a Push ID which has already been promised as a connection
-error of type H3_ID_ERROR.
+A server MAY use the same Push ID in multiple PUSH_PROMISE frames. If so, the
+decompressed request header sets MUST contain the same fields in the same
+order, and both the name and and value in each field MUST be exact
+matches. If a client receives a Push ID that has already been promised
+and detects a mismatch, it MUST respond with a connection error of type
+H3_GENERAL_PROTOCOL_ERROR. If the decompressed header sets match exactly, the
+client MUST ignore the duplicate PUSH_PROMISE frame.

Hm. I agree that it's an error, but I'm not sure what it means to associate pushed content with the request stream that received the PUSH_PROMISE. There is only going to be a single push stream with the specified push id, of course. And as such, only a single request can be directly associated with that push stream. Of course, because of caching, other requests can be satisfied by the cached response. But that's at a layer above the streams, right?

(in chrome, I don't think we have any mapping between pushed streams and the request stream that promised the pushes so maybe we're "doing it wrong"?)

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