Subject: [Technical Errata Reported] RFC7540 (5249)

From: RFC Errata System <[email-masked]>
Date: Wed, 31 Jan 2018 17:19:01 -0800 (PST)

The following errata report has been submitted for RFC7540,
"Hypertext Transfer Protocol Version 2 (HTTP/2)".

--------------------------------------
You may review the report below and at:
http://www.rfc-editor.org/errata/eid5249

--------------------------------------
Type: Technical
Reported by: Vasiliy Faronov <[email-masked]>

Section: 3.2.1

Original Text
-------------
     HTTP2-Settings    = token68

Corrected Text
--------------
     HTTP2-Settings    = [ token68 ]

Notes
-----
An initial SETTINGS frame is explicitly allowed by Section 3.5 to be empty. The payload of an empty SETTINGS frame is an empty sequence of octets, whose base64url encoding is an empty string. Thus, the HTTP2-Settings header field ought to permit an empty string as value. But the ABNF for "token68" does not match an empty string.

Instructions:
-------------
This erratum is currently posted as "Reported". If necessary, please
use "Reply All" to discuss whether it should be verified or
rejected. When a decision is reached, the verifying party  
can log in to change the status and edit the report, if necessary. 

--------------------------------------
RFC7540 (draft-ietf-httpbis-http2-17)
--------------------------------------
Title               : Hypertext Transfer Protocol Version 2 (HTTP/2)
Publication Date    : May 2015
Author(s)           : M. Belshe, R. Peon, M. Thomson, Ed.
Category            : PROPOSED STANDARD
Source              : Hypertext Transfer Protocol Bis APP
Area                : Applications
Stream              : IETF
Verifying Party     : IESG

---

From: Martin Thomson <[email-masked]>
Date: Thu, 1 Feb 2018 12:43:53 +1100

The observation is correct.  However, I'm not sure that this is the
solution I would choose.  I'm not sure, but I think that an empty
header field would cause problems.  Maybe the right conclusion to draw
here is that you have to include at least one setting if you use this
header field.

---

From: Willy Tarreau <[email-masked]>
Date: Thu, 1 Feb 2018 07:32:00 +0100

On Thu, Feb 01, 2018 at 12:43:53PM +1100, Martin Thomson wrote:
> header field would cause problems.

Some intermediaries risk to drop it, considering that empty is equivalent
to absent.

> Maybe the right conclusion to draw

I just tried to see if "====" would be possible as an encoding for an
empty string, but at least the base64 utility I have here considers
that it's an invalid input, so I suspect that it's not widely accepted
to have an end tag at the beginning of a base64 string. Thus most
likely as you suggest, something needs to be sent. Maybe we should
recommend to pass one of the default settings in this case.

Willy