ietf-nntp Article concepts

Russ Allbery rra at stanford.edu
Mon Mar 31 13:04:07 PST 2003


Clive D W Feather <clive at demon.net> writes:

> 3.4 Articles

>    NNTP is intended to transfer articles between clients and servers.
>    For the purposes of this specification, articles are required to
>    conform to the rules in this section and clients and servers MUST
>    correctly process any article received from the other that does so.

I'm not sure I entirely understand what that provision means.  I'm not
really advocating changing it, just registering some confusion as to what
the intended implication is.  It feels like it would be sufficient to say
"articles MUST conform to the rules in this section" and ending the
sentence there.

>    An article consists of two parts: the headers and the body. They are
>    separated by a single empty line, or in other words by two
>    consecutive US-ASCII CRLF pairs (if there is more than one empty
>    line, the second and subsequent ones are part of the body). In order
>    to meet the general requirements of NNTP, an article MUST NOT include
>    the octet 0x00, MUST NOT contain the octets 0x0A and 0x0D other than
>    as part of a CRLF pair, and MUST end with a CRLF pair. This
>    specification puts no further restrictions on the body; in
>    particular, it MAY be empty.

Nit:  The body cannot both end with a CRLF pair and be empty.  Perhaps
"and MUST end with a CRLF pair or be completely empty"?

>    The headers of an article consist of one or more header lines. Each
>    header line consists of a header name, a colon, a space, the header
>    value, and a CRLF in that order. The name consists of one or more
>    US-ASCII printable characters other than colon and, for the purposes
>    of this specification, is not case sensitive. There MAY be more than
>    one header line with the same name amd different values.

There may also be more than one header line with the same name and the
same value.  I'd just omit "and different values."

>    The value MUST NOT contain CRLF but is otherwise unrestricted; in
>    particular, it MAY be empty. A header may be "folded"; that is, a
>    CRLF pair may be placed before any 0x09 or 0x20 octet (US-ASCII tab
>    or space) in the line, except that there MUST be at least one octet
>    other than 0x09 or 0x20 between any two CRLF pairs in a header
>    line. (Note that folding means that the header line occupies more
>    than one line when displayed or transmitted; nevertheless it is still
>    referred to as "a" header line.) The presence or absence of folding
>    does not affect the meaning of the header line.

The last sentence mostly covers this, but for additional clarity it may be
good to say explicitly something like "the CRLF pairs introduced by
folding are not considered part of the header value."  Saying that they
don't affect the meaning is more vague and could be taken to refer to the
semantic meaning of the header value.

>    Each article SHOULD have a message-id, which is the value of the
>    header with name "Message-ID".

Saying this here is problematic, since we also say that the article
supplied by POST need not have a message ID (and SHOULD is certainly too
strong for client-supplied message IDs; in general, we would prefer the
client to let the server assign a message ID unless the client has its own
domain name).  I think this either needs to be moved elsewhere (perhaps in
the description of IHAVE?) or POST would need to be changed to introduce
the concept of a "proto-article."

-- 
Russ Allbery (rra at stanford.edu)             <http://www.eyrie.org/~eagle/>



More information about the ietf-nntp mailing list