Re: [quicwg/base-drafts] Import most H2 references (#3407)

Mike Bishop <> Tue, 25 February 2020 20:16 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 0F8B43A1505 for <>; Tue, 25 Feb 2020 12:16:00 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -3.1
X-Spam-Status: No, score=-3.1 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, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, 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 vkabmiJMwKAg for <>; Tue, 25 Feb 2020 12:15:58 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id A6EA33A1501 for <>; Tue, 25 Feb 2020 12:15:58 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id B20FA6A091B for <>; Tue, 25 Feb 2020 12:15:57 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=pf2014; t=1582661757; bh=zAYzRkE2d4SuJMPy15uLydeEBJ1l2Q2N5POjsVbjyQg=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=aCJYI4k2DJv6sAsYc8FVH3Az8bP9XPmYbOnuHBEnjEibqZu8G4CVqu1ejwhICkt5T ZfqFp5UFtSqtLUmz4LHRI+VxAQIwJtl4m/EktOC3jfTsRyIt315luVB9ZVK4pN3iVF +KGIxVO7G1/YBH1pV8Jpz3vfZwhN2CphwnUxD1ow=
Date: Tue, 25 Feb 2020 12:15:57 -0800
From: Mike Bishop <>
Reply-To: quicwg/base-drafts <>
To: quicwg/base-drafts <>
Cc: Subscribed <>
Message-ID: <quicwg/base-drafts/pull/3407/review/>
In-Reply-To: <quicwg/base-drafts/pull/>
References: <quicwg/base-drafts/pull/>
Subject: Re: [quicwg/base-drafts] Import most H2 references (#3407)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5e55807da2f2a_209a3f7f7c0cd95c1754b6"; 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: Tue, 25 Feb 2020 20:16:00 -0000

MikeBishop commented on this pull request.

> -requests MUST conform to the requirements in Section 8.2 of {{!HTTP2}}.
+{{frame-push-promise}}) on the request stream which generated the push. This
+allows the server push to be associated with a client request.
+Not all requests can be pushed.  A server MAY push requests which have the
+following properties:
+- cacheable (see Section 4.2.3 of [RFC7231])
+- safe (see Section 4.2.1 of [RFC7231])
+- does not include a request body
+Clients SHOULD send a CANCEL_PUSH frame upon receipt of a PUSH_PROMISE frame
+carrying a request which is not cacheable, is not known to be safe, or that
+indicates the presence of a request body.  If the pushed response arrives on a
+push stream, this MAY be treated as a stream error of type

Requests can be cacheable, but have answers which turn out not to be cacheable.  The distinction we settled on for H2 was that you can only promise cacheable requests, but the response need not be cacheable.

Yes, all of this is an error.  The question is whether:
- it needs to be a stream error on the response that contains the push
- it can be detected at the right layer for that to happen

My reasoning is primarily that, if you need to decompress and examine the headers to determine whether something is in error, an immediate stream error is not the right response to mandate.  Instead, you mark the push as invalid -- cancel it, and reject the push stream if it purports to arrive.

Really, this is a case of the push being malformed, and the idea is to define a response to malformed pushes that's commensurate with malformed responses -- don't use it.

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