Re: [quicwg/base-drafts] Clarify and split the "malformed" definition (#3352)

Mike Bishop <> Fri, 17 January 2020 05:02 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 7E5671200D6 for <>; Thu, 16 Jan 2020 21:02:59 -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 HfrFoE7ReI8M for <>; Thu, 16 Jan 2020 21:02:57 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id DE6ED120099 for <>; Thu, 16 Jan 2020 21:02:56 -0800 (PST)
Date: Thu, 16 Jan 2020 21:02:56 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=pf2014; t=1579237376; bh=tN1JK6vGPucrePFDvYoPspPFI6L+6RJnVjFnOUsIjwM=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=lOevKsIGgRl4No4TDdp1AOaEC0cqBPZQZVTQIi77yyck1kJ9t8jfWcpaj2OvTK+ID N+a9l+/IuJ01p0nGZCnbbU/sUr5vxqAYlQxxLo5RZ850Wfqyx2CD4ONofD4flSQXIg sPaagB2rXbymEM1jBfqhDNS4e4+7NiVY7b5+x8n0=
From: Mike Bishop <>
Reply-To: quicwg/base-drafts <>
To: quicwg/base-drafts <>
Cc: Subscribed <>
Message-ID: <quicwg/base-drafts/pull/3352/review/>
In-Reply-To: <quicwg/base-drafts/pull/>
References: <quicwg/base-drafts/pull/>
Subject: Re: [quicwg/base-drafts] Clarify and split the "malformed" definition (#3352)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5e2140009984_1af73fd8a90cd96c67498"; 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: Fri, 17 Jan 2020 05:03:00 -0000

MikeBishop commented on this pull request.

Re-reading with fresh eyes, I see things to fix tomorrow.

> @@ -450,15 +457,103 @@ field names MUST be converted to lowercase prior to their encoding.  A request
 or response containing uppercase header field names MUST be treated as
 malformed ({{malformed}}).
+Like HTTP/2, HTTP/3 does not use the Connection header field to indicate
+connection-specific header fields; in this protocol, connection- specific

Artifact of copying from 7540.

> -those defined in {{!HTTP2}}.  The restrictions on the use of pseudo-header
-fields in Section 8.1.2 of {{!HTTP2}} also apply to HTTP/3.  Messages which
-are considered malformed under these restrictions are handled as described in
+the status code for the response.
+Pseudo-header fields are not HTTP header fields.  Endpoints MUST NOT generate
+pseudo-header fields other than those defined in this document, except as
+negotiated via an extension; see {{extensions}}.
+Pseudo-header fields are only valid in the context in which they are defined.
+Pseudo-header fields defined for requests MUST NOT appear in responses;
+pseudo-header fields defined for responses MUST NOT appear in requests.
+Pseudo-header fields MUST NOT appear in trailers.  Endpoints MUST treat a
+request or response that contains undefined or invalid pseudo-header fields as
+malformed ({{malformed}}).

This probably needs to be forcibly rewrapped -- obviously the editor's auto-wrapping was confused by the spacing.

> +
+  ":path":
+  : Contains the path and query parts of the target URI (the "path-absolute"
+    production and optionally a '?' character followed by the "query"
+    production (see Sections 3.3 and 3.4 of [RFC3986]).  A request in asterisk
+    form includes the value '*' for the ":path" pseudo-header field.
+  : This pseudo-header field MUST NOT be empty for "http" or "https"
+    URIs; "http" or "https" URIs that do not contain a path component
+    MUST include a value of '/'.  The exception to this rule is an
+    OPTIONS request for an "http" or "https" URI that does not include
+    a path component; these MUST include a ":path" pseudo-header field
+    with a value of '*' (see [RFC7230], Section 5.3.4).
+All HTTP/3 requests MUST include exactly one valid value for the ":method",

Arguably, this language from 7540 permits it to also contain any number of invalid values.  Worth rephrasing.

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