RFC Errata


Errata Search

 
Source of RFC  
Summary Table Full Records

RFC 5536, "Netnews Article Format", November 2009

Source of RFC: usefor (app)
See Also: RFC 5536 w/ inline errata

Errata ID: 5116
Status: Verified
Type: Technical
Publication Format(s) : TEXT

Reported By: Paul Kyzivat
Date Reported: 2017-09-14
Verifier Name: Alexey Melnikov
Date Verified: 2017-09-27

Section 3 says:

   fields          =/ *( approved /
                         archive /
                         control /
                         distribution /
                         expires /
                         followup-to /
                         injection-date /
                         injection-info /
                         lines /
                         newsgroups /
                         organization /
                         path /
                         summary /
                         supersedes /
                         user-agent /
                         xref )

It should say:

   optional-field  = <see RFC 5322 Section 3.6.8>

   news-fields     =  approved /
                      archive /
                      control /
                      distribution /
                      expires /
                      followup-to /
                      injection-date /
                      injection-info /
                      lines /
                      newsgroups /
                      organization /
                      path /
                      summary /
                      supersedes /
                      user-agent /
                      xref

   optional-field  =/    news-fields

Notes:

In Section 3 of RFC5536, the ABNF syntax provided does not do what is clearly intended. What is specified is:

fields =/ *( approved /
archive /
control /
distribution /
expires /
followup-to /
injection-date /
injection-info /
lines /
newsgroups /
organization /
path /
summary /
supersedes /
user-agent /
xref )

and that extends RFC5322:

fields = *(trace
*optional-field /
*(resent-date /
resent-from /
resent-sender /
resent-to /
resent-cc /
resent-bcc /
resent-msg-id))
*(orig-date /
from /
sender /
reply-to /
to /
cc /
bcc /
message-id /
in-reply-to /
references /
subject /
comments /
keywords /
optional-field)

message = (fields / obs-fields)
[CRLF body]

The problem is with the way things are grouped. Let me give a simpler example:

foo = *("a" / "b") / *("c" / "d")

This means the following are valid: ab aabb bab cd ccdd dcd
But the following are not: abcd ac

I think it is clear that the latter is intended to be valid, for which the syntax would be:

foo = *("a" / "b" / "c" / "d")

It isn't easy to do a valid syntax extension that achieves this effect
because of way the ABNF of RFC5322 is structured. However, after offline
discussion, we realized that RFC5322 already has an extension point for
new headers via the <optional-field> rule. Along with that, RFC3864
established a process for registering header fields with IANA.

The above fix is based on discussion with Pete Resnick (editor of RFC 5322), Julien ÉLIE, Alexey Melnikov and Paul Kyzivat.

An alternative fix from Paul Kyzuvat is:

So, my recommendation is that to fix this, remove from section 3 the
extension of the <fields> rule:

fields =/ *( approved / ...
xref )

Instead, simply rely on the text to specify the newly defined header
fields, and the IANA registration to link them to RFC5322.

Report New Errata