Subject: [Technical Errata Reported] RFC7230 (4189)

From: RFC Errata System <[email-masked]>
Date: Wed, 26 Nov 2014 11:56:39 -0800 (PST)

The following errata report has been submitted for RFC7230,
"Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing".

--------------------------------------
You may review the report below and at:
http://www.rfc-editor.org/errata_search.php?rfc=7230&eid=4189

--------------------------------------
Type: Technical
Reported by: Simon Schueppel <[email-masked]>

Section: 3.2

Original Text
-------------
     header-field   = field-name ":" OWS field-value OWS

     field-name     = token
     field-value    = *( field-content / obs-fold )
     field-content  = field-vchar [ 1*( SP / HTAB ) field-vchar ]
     field-vchar    = VCHAR / obs-text

     obs-fold       = CRLF 1*( SP / HTAB )
                    ; obsolete line folding
                    ; see Section 3.2.4

Corrected Text
--------------
    header-field   = field-name ":" FWS field-value FWS
    
    field-name     = token
    FWS            = field-ows
    field-value    = [ field-vchar *( field-ows field-vchar ) ]
    field-vchar    = VCHAR / obs-text
    field-ows      = *( SP / HTAB ) *obs-fold
    
    obs-fold       = CRLF 1*( SP / HTAB )
                    ; obsolete line folding
                    ; see Section 3.2.4

Notes
-----
the field-value rule given in Section 3.2 will not recognize several strings recognized by specific header rules.

Examples:
    - ", , ," recognized by legacy list rule
    - "abrowser/0.001 (C O M M E N T)" recognized by User-Agent rule
    - "gzip , chunked" recognized by Transfer-Encoding rule
    - etc.

General Problem:
    the specified field-value rule does not allow single field-vchar surrounded by whitespace anywhere

Further Notes:
    -what the authors propably wanted to say:
        a string of octets is a field-value if, and only if:
            -it is *( field-vchar / SP / HTAB / obs-fold )
            -if it is not empty, it starts and ends with field-vchar

    -the suggested correction was designed according to these criteria

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 (IESG)
can log in to change the status and edit the report, if necessary. 

--------------------------------------
RFC7230 (draft-ietf-httpbis-p1-messaging-26)
--------------------------------------
Title               : Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing
Publication Date    : June 2014
Author(s)           : R. Fielding, Ed., J. Reschke, Ed.
Category            : PROPOSED STANDARD
Source              : Hypertext Transfer Protocol Bis
Area                : Applications
Stream              : IETF
Verifying Party     : IESG

---

From: Julian Reschke <[email-masked]>
Date: Thu, 27 Nov 2014 08:20:28 +0100

Hi there,

I agree that there is indeed a problem ("the specified field-value rule 
does not allow single field-vchar surrounded by whitespace anywhere.

I'm however not sure that the proposed fix is what we want. In 
particular, it's not clear why we need to modify the header-field 
production at all.

Best regards, Julian

-- 
<green/>bytes GmbH, Hafenweg 16, D-48155 Münster, Germany
Amtsgericht Münster: HRB5782

---

From: Zhong Yu <[email-masked]>
Date: Thu, 27 Nov 2014 21:25:15 -0600

On Thu, Nov 27, 2014 at 1:20 AM, Julian Reschke
<[email-masked]> wrote:
> Hi there,
>
> I agree that there is indeed a problem ("the specified field-value rule does
> not allow single field-vchar surrounded by whitespace anywhere.
>
> I'm however not sure that the proposed fix is what we want. In particular,
> it's not clear why we need to modify the header-field production at all.

The new rule excludes leading/trailing obs-fold from field-value as
well. It's equivalent to

    header-field   = field-name ":" OWS *obs-fold field-value OWS *obs-fold

The proposed text seems correct to me.

Zhong Yu
http://bayou.io

>> the field-value rule given in Section 3.2 will not recognize several
>> strings recognized by specific header rules.
>>
>> Examples: