ietf-nntp Re: [NNTP Draft]
Clive D.W. Feather
clive at demon.net
Sun Feb 27 04:46:51 PST 2000
Russ Allbery said:
> These are responses to a complete reading of the current draft (I took
> advantage of Andrew's recent posting of it to news.software.nntp to review
> it). I'm commenting as I see things that seem unclear.
Back in November I posted a long analysis of the document. With a couple of
minor exceptions, I got no response to this. I'm reposting it with edits to
take account of those responses. How do we get such things fixed ?
Note: I'm reading this as a "black box" specification, deliberately not
relying on knowledge of other implementations. Questions in this message
should be read as if they contained "it should be easy to determine the
answer to this question from the document but it isn't at the moment".
Where I suggest changes, I am willing to assist on detailed wordsmithing if
and when the concept is agreed.
> NNTP operates over any reliable data stream 8-bit-wide
Can we add something about streaming/pipelining here ? In other words,
though the protocol requires the client to send commands and the server to
respond, the client should be able to send further commands without having
to wait for the server to respond to the previous command (providing, of
course, that it gets the overall protocol correct). This may seem obvious,
but see RFC 1854 for why it isn't.
Andrew Gierth said:
| It may also be necessary or appropriate to specifically exclude some
| commands from being pipelined; the obvious case is the MODE command.
| (The IHAVE command has its own barrier to pipelining,
As indeed does POST. But why do we need to exclude anything (particularly
MODE) from pipelining ?
> There MUST be only one CONNECTION,
> CONCLUSION and DISCONNECTION step for each NNTP session. All
> other steps MAY be repeated as needed.
How do you repeat the GREETING step ?
> Command lines MUST NOT
> exceed 512 octets, which includes the terminating US-ASCII
> CRLF pair. Arguments MUST NOT exceed 497 octets.
Where did this 497 come from ? It's not 512 minus a three character
command, space, and CRLF.
> However, certain
> commands MAY permit multi-line responses.
This is a misuse of "MAY".
However, certain responses from commands are multi-line.
> A NNTP server MAY have an inactivity autologout timer. Such a
> timer MUST be of at least three minutes duration. The receipt
> of any command from the client during that interval should
> suffice to reset the autologout timer.
s/should/SHOULD/ or, even better, s/should/MUST/.
> In addition, below is
> listed a general set of response codes that MAY be received at
> any time.
Does this refer to the x9x debugging codes below, or something else ?
If the latter, please add a reference.
> Parameters MUST be separated from the numeric status indicator
> and from each other by a single US-ASCII space. All numeric
> parameters MUST be in base 10 (decimal) format, and may have
> leading zeros.
> The use of unspecified response codes for a standard command
> is prohibited.
> The status indicator pattern x9x is provided for debugging.
> Since much debugging output may be classed as "informative
> messages", it MUST be the case that responses 190 through 199
> WILL be used for various debugging outputs. There is no
> requirement in this specification for debugging output.
> However, if such is provided over the connected stream, it
> MUST use these response codes. If appropriate to a specific
> implementation, other x9x codes MAY be used for debugging.
> (For example, response code 290 could be used to acknowledge a
> remote debugging request.)
I cannot make head or tail out of this part of the specification. For a
start, what on earth does "it MUST be the case that ... WILL be used"
mean ? As a potential implementor, I have the following questions.
Can any command, including standard commands, return a 19x response ?
What about other x9x responses ? If not, then this section needs rewriting
to just say that the x9x codes are available for debugging. If standard
commands *can* return x9x responses, then it needs rewriting to make this
If a standard command can receive a 19x response, what is the client
supposed to do ? Is the server required to send another response following
it ? Is this also the case for other 1xx responses ? If the server doesn't
followup the 19x, has the command succeeded or not ?
What about other x9x responses ?
> The third specifies a
> specific set of characters. The set is specified as a list of
> characters, or as a range of characters where the beginning
> and end of the range are separated by a minus (or dash)
> character, or as any combination of lists and ranges.
Many implementers are not going to be familiar with the implications of
UTF-8. I would suggest that either a note or an example would be worthwhile
here. Something like this:
Note: Implementers must be careful to apply the pattern-matching
operators to whole characters encoded in UTF-8, and not to individual
61 3F 3F 64 matches 61 C2 A3 C4 B5 64
but not 61 C2 A3 64
5B 7E 2D C2 A3 5D matches either a single octet 7E or 7, or one of
the 36 sequences from C2 80 to C2 A3 inclusive.
> The meaning of the backslash operator cannot be
> negated by the exclamation point.
That does not make sense. What I think you mean is that:
means a pattern other than those beginning "\x", in which case I would
suggest having it as an example rather than as those words.
> 5.1 Negating the expression
The word "expression" hasn't appeared before. Change it to "wildmat" or
> The exclamation point can be used at the beginning of a
> wildmat to negate it.
To clarify what "negate" means, perhaps add:
That is, if the remainder of the pattern would match the string then
the negated pattern does not, and vice versa.
> 6. Format for Keyword Descriptions
> Each keyword is shown in upper case for clarity, although the
> NNTP server ignores case in the interpretation of commands.
> Any parameters are shown in lower case. A parameter shown in
> [square brackets] is optional. For example, [GMT] indicates
> that the triglyph GMT may be present or omitted.
These three sentences, read together, don't make much sense. A better way
to word it would be:
Each keyword is shown in upper case for clarity, although the
NNTP server ignores case in the interpretation of commands.
A parameter shown in [square brackets] is optional. For example,
[wildmat] indicates that a wildmat may be present or omitted.
group name or a <message-id> may be specified, but not both.
Unless stated otherwise, a parameter name in lowercase represents
a token described elsewhere, while one in uppercase is a literal
string that is included as written.
> The pattern in all cases is
> based on the WILDMAT format. Arguments expected to be in
> wildmat format
Please be consistent throughout the document.
> 7.1 Initial Connection
There are four codes described. These are:
200 - further commands will be accepted, POST allowed
201 - further commands will be accepted, POST not allowed
502 - not authorised, connection will be closed
400 - all other cases
What I'm not clear about is when a 400 is generated and whether further
commands will be accepted. Assuming that they won't (if they would, then
why not a 20x code), I presume that 400 means "authorised but I'm going to
terminate the connection anyway".
If I'm right so far, then I would suggest a complete rewording of this bit:
If the server will accept further commands from the client including
POST, it MUST present a 200 greeting code.
If the server will accept further commands from the client, but it is
not authorised to post articles using the POST command, it MUST present
a 201 greeting code.
Otherwise the server MUST present a 400 or 504 greeting code and then
immediately close the connection. 504 MUST be used if the client is
not permitted under any circumstances to interact with the server, and
> 7.1.2 MODE READER
> MODE READER MAY be used by the client to indicate to the
> server that it is a news reading client.
As opposed to what ? What is the effect of sending, or not sending, this
command ? To the best of my ability to read the spec the MODE command does
*nothing* other than produce a response. If this is not the case, the spec
badly needs rewriting.
> 184.108.40.206 Responses
> 200 Hello, you can post
> 201 Hello, you can't post
> 400 Service temporarily unavailable
> 502 Service unavailable
Is there any circumstance where the initial greeting is 20x but this
command responds 400 or 502 ? Is the server required to close the
connection after a 400 or 502 ?
> 8. The CAPABILITIES DISCOVERY Step
> The extension-label to be used in the
> response to the LIST EXTENSIONS command will be specified as
> each new extension is added to the NNTP command set.
> The extension-label is nominally case sensitive, however the
> definitions of specific labels and parameters specify the
> precise interpretation, and it is to be expected that those
> definitions will usually specify the label in a case
> independent manner. Where this is done, implementations are
> recommended to use US-ASCII upper case letters when
> transmitting the extension response.
This sounds like the worst of all possible worlds; the client has to do a
case-insensitive comparison of some names but a case-sensitive comparison
Since this is, AIUI, a new command in this specification, why not just
declare it to be case-insensitive like commands are ?
> The LIST EXTENSIONS command itself is not included in the list
> of features supported, support for the LIST EXTENSIONS command
> is indicated by return of a reply other than a 500 or 502
What other commands are not indicated by an entry in the list of features
supported ? Reading this makes it look as if the default is for all
commands to be listed in some way. This sentence probably ought to be
Except where stated otherwise, the commands in this document
are understood (even if not supported) by all servers and are not
described in the list of features returned by the LIST EXTENSIONS
> A typical example reply to the LIST EXTENSIONS command might
> be a multiline reply of the form:
> [C] LIST EXTENSIONS
> [S] 202 Extensions supported:
> [S] OVER
> [S] PAT
> [S] LISTGROUP
> [S] .
Where are those essential spaces ? [And why on earth are they there ?]
> 8.1.3 Error responses from extended servers
> must return code 400. Note that this is response code should
> In the case of any error response outlined in this section,
> the client NNTP should issue the QUIT command (see section
> 8.1.5 Responses from improperly implemented servers
> A server NNTP that improperly implements the LIST EXTENSIONS
> command may return an empty list. Clients SHALL accommodate
> this protocol violation and interpret it as a response code
If they SHALL accommodate it, then it isn't a violation but rather a
required part of the protocol. Is there any reason to call this "improper"
rather than just another way of saying the same thing ?
> 9.1 Article Retrieval
> Article numbers MUST lie between 1 and 4,294,967,295
> inclusive. The client and server SHOULD NOT use leading zeroes
> in specifying article numbers, and MUST NOT use more than 16
> digits. In some situations, the value zero replaces an article
> number to show some special situation.
That much is fine, but this bit:
> One case involves
> responses to the ARTICLE, STAT, BODY and HEAD commands where a
> <message-id> is specified as the argument. In those cases, the
> "current article pointer" is not changed.
isn't. It should be removed and merged with the relevant text in 9.2 (see
> 9.1.1 Article Retrieval by News Group Name and Article Number
> The following commands are used to set the current news group
> name and the "current article pointer" which is used by other
> commands for article retrieval.
At the start of the NNTP session no news group is selected.
> 220.127.116.11 GROUP
> If an
> invalid group is specified, the previously selected group and
> article MUST remain selected.
s/group/group, if any,/
> 18.104.22.168 LAST
> The internally-maintained "current article pointer" MUST be
> set by this command.
What is the point of this sentence ? It's not true if there's no current
group, and it's implied by the preceding text anyway.
The following sentence needs "If successful, " prefixed to it.
> 22.214.171.124 NEXT
Same comments. In addition:
> A response indicating the current article number and the
> message-id string MUST be returned. No text is sent in
> response to this command.
> Example of an attempt to retrieve an article using the NEXT
> command when the current article pointer is pointing at the
> first article in the group
> 9.2 Retrieval of Articles and Article Sections
> There are two forms to the ARTICLE command (and the related
> BODY, HEAD, and STAT commands), each using a different method
> of specifying which article is to be retrieved. When the
> ARTICLE keyword is followed by a message-id in angle brackets
> ("<" and ">"), the first form of the command MUST be used;
> when a numeric parameter or no parameter is supplied, the
> second form MUST be invoked.
This is badly worded: the form of the article *is* ARTICLE followed by a
parameter - it makes no sense to say that, if the parameter is such and
such then this form MUST be used. Here's a rewrite:
The ARTICLE command (and the related BODY, HEAD, and STAT commands)
have three forms, each specifying the article to be retrieved in a
indicates that the message is to be retrieved by message-id as given
in the article's header.
(where nnn is a number) indicates that the message with that number
is to be retrieved from the currently selected group, and
indicates that the message with the current article number is to be
retrieved from the currently selected group. Apart from the missing
number this third form behaves identically to the second form.
> In the cases where the argument
> is a message-id, the article number specified in the response
> must be zero.
Either that should read "MUST be zero", or (based on an early message on
the list) it should be changed to:
If the argument is a message-id, the article number specified in the
response MUST be either zero, or if the article occurs in the currently
selected group, the number that it holds in that group.
> This is one of the special cases described in
> section 9.1.
Do we actually need this ?
> 9.2.1 ARTICLE
This and the next three commands are *very* similar, and the reader will
have difficulty in determining the differences between them. I would
suggest that almost all the text is moved into 9.2. In fact, move all the
paragraphs except the first, which then gets reduced to:
> ARTICLE [<message-id>|nnn]
> This response displays the header, a blank line, then the body
> (text) of the specified article.
The rest is in the rewrite above (except for the bit about:
> SHOULD be chosen from the range of articles provided when the
> news group was selected
which, I think, is a misuse of the term SHOULD.
Looking through the text moved:
> The internally-maintained "current article pointer" MUST be
> set when a valid article number is specified as the argument.
Set to what ? The number of the article specified ? It should say so.
> Example of a failure due to the service being unavailable
> [S] 200 NNTP Service Ready
> [C] ARTICLE <i.am.a.test.article at nowhere.to>
> [S] 500 Service unavailable
I thought it was 502.
> 9.2.2 HEAD
> HEAD [<message-id>|nnn]
> This response displays the header of the specified article.
Now delete the rest (up to and excluding the responses) and add:
Except for the different response code when successful, and that it
only displays the header and not the blank line or body of the
article, it is identical to the ARTICLE command.
> Example of a failure due to the service being unavailable
> [S] 200 NNTP Service Ready
> [C] HEAD <i.am.a.test.article at nowhere.to>
> [S] 500 Service unavailable
> 9.2.3 BODY
Again, the definition becomes:
This response displays the header of the specified article. Except
for the different response code when successful, and that it only
displays the body of the article and not the blank line or header,
it is identical to the ARTICLE command.
> 9.2.4 STAT
This response returns only status information about the existence
of the specified article. Except for the different response code
when successful, and that it does not return any text (and so does
not have a terminating dot) it is identical to the ARTICLE command.
> 9.3.1 POST
> 126.96.36.199 Responses
> 240 article received ok
> 340 send article to be posted. End with <CR-LF>.<CR-LF>
> 440 posting not allowed
> 441 posting failed
It would be worth having separate "initial responses" and "second
responses" sections to make it clear which is allowed when.
> 9.4 The LIST Keyword
Is there any reason that this is in 9.X but other commands are in 11.X ?
As far as I can see none of the stuff in 9.4 (which, by the way, *isn't*
just LIST) alters the internal state of the server, which is what 11 gives
as the basis for the split.
> 9.4.1 LIST
> group first last status
> where <group> is the name of the news group, <last> is the
> number of the last known article currently in that news group,
> <first> is the number of the first article currently in the
> news group,
This should use the same terminology as GROUP does, rather than having an
equivalence described later.
> and <status> indicates the current status of the
> group on this server. Typically, the <status> will be consist
> of the US-ASCII character `y' where posting is permitted, `n'
> where posting is not permitted and `m' where postings will be
> forwarded to the news group moderator by the news server.
> Other status strings may exist. The definition of these other
> values is covered in other specifications.
In what circumstances will other codes be returned ? Can a client assume
that if LIST EXTENSIONS doesn't return anything, or if no extension listed
defines otherwise, no other such codes will appear ?
> Note that posting may still be prohibited to a client although
> the LIST command indicates that posting is permitted to a
> particular news group. See the POST command for an explanation
> of client prohibitions. The posting flag exists for each news
> group because some news groups are moderated or are digests,
> and therefore cannot be posted to; that is, articles posted to
> them must be mailed to a moderator who will post them for the
> original poster.
Bad description; you can usually POST to a moderated group (it's just that
the posting is handled differently).
Can a POST command ever succeed for a "n" group ?
> If the optional matching parameter is specified, the list is
> limited to only the groups that match the pattern.
s/matching/wildmat/ After all, "ACTIVE" is an optional parameter.
> Specifying a single group is usually very efficient for the
> server. Multiple groups may be specified by using wildmat
> patterns (described in section 5), not regular expressions.
Since we don't define regular expressions anywhere, do we need this last
> 9.4.2 LIST ACTIVE.TIMES
> The active.times file is maintained by some news transport
> systems to contain information about when and who created a
> particular news group.
s/when and who created ... group/who created ... group, and when/
> The format of this file generally
> includes three fields.
"generally" ? When is it permitted for the server to return something
Same comments about wildmat as above.
> 215 information follows
> 503 program error, function not performed
Can 503 be returned if the information is not maintained (I wouldn't call
that an error) ?
> 9.4.4 LIST DISTRIB.PATS
> LIST DISTRIB.PATS
> The distrib.pats file is maintained by some news transport
> systems to contain default values for the Distribution: line
> in a news article header when posting to particular news
> groups. This information could be used to provide a default
> value for the Distribution: line in the header when posting an
> article. The information returned contains three fields
> separated by colons. The first column is a weight. The second
> is a group name or a wildmat pattern that can be used to match
> a group name. The third is the value of the Distribution:
> line that should be used when the group name matches and the
> weight value is the highest. All this processing is done by
> the news posting client and not by the server itself. The
> server provides this information to the client for it to use
> or ignore as it chooses.
Sorry, but I'm having trouble with this. I *think* that what it means is:
The distrib.pats file is maintained by some news transport
systems to allow clients to choose a value for the Distribution:
line in the header of a news article being posted. The information
returned consists of lines, in no particular order, each of which
contains three fields separated by colons. These fields are a
weight, a group name or wildmat pattern, and a Distribution: value,
in that order.
The client MAY use this information to select a Distribution: value
based on the name of a newsgroup. To do so, it should determine the
lines whose second field matches the newsgroup name, select that line
with the highest weight (with 0 being the lowest), and use the
Distribution: field from that line.
Is that right ?
> 503 program error, function not performed
Again, does 503 include "information not maintained" ?
> 9.4.6 LIST OVERVIEW.FMT
> This is command is part of the optional OVER extension which
> includes the OVER command defined in section 9.4.8. If the
> OVER extension is not implemented, then this command MUST NOT
> be implemented.
This paragraph should be first, possibly even before the line that says
> 9.4.7 LISTGROUP
> The successful selection response will be a list of the
> article numbers in the group followed by a period on a line
> by itself.
Must they be in numerical order ? Are they all valid articles, or can the
server just list all numbers from low to high water mark ?
> When a valid group is selected by means of this command,
Does this command have the side effect of selecting the group like GROUP
does ? It doesn't say so.
> The LISTGROUP command is an optional extension. It MAY be
> implemented. If it is not implemented, then the LISTGROUP
> label MUST NOT be included in the response to the LIST
> EXTENSIONS command.
This is entirely back to front.
Firstly, if parts of this specification are optional, they are better off
in a separate "optional facilities" clause. That would be a much better way
to split 9.X and 11.X than you have at present. Each extension should be in
a separate 11.X clause with an introduction (this is not the same as the
existing clause 12 on the framework for extensions; in fact, that should
come before the clause I'm discussing here). So, something like this:
11. Standard extensions
Each of the following sections describes an extension that a server
MAY provide. If the server provides the extension, it MUST include
the appropriate extension label in the response to LIST EXTENSIONS.
If it does not provide it, it MUST NOT include the appropriate
The descriptions of facilities in each section are written as if the
extension is provided. If it is not provided, the entire section
should be ignored.
11.1 LISTGROUP extension
The extension label for this extension is "LISTGROUP". It provides
one new command.
11.1.1 LISTGROUP command
[Most of what we have right now]
11.2 OVER extension
The extension label for this extension is "OVER". It provides two
new commands: OVER and LIST OVERVIEW.FMT.
11.2.1 LIST OVERVIEW.FMT command
11.2.2 OVER command
and so on.
> 188.8.131.52 Responses
> 211 list of article numbers follow
> 411 No such group
> 412 Not currently in news group
What is the response for "this extension not supported" ? If there is a
generic code for this, I seem to have overlooked it.
> 9.4.8 OVER
There's no need to mention an "overview database", since that is just an
Nowhere does it say that a range argument applies to the currently selected
> Each line of output MUST be formatted with the article number,
> followed by each of the headers in the overview database or
> the article itself (when the data is not available in the
> overview database) for that article separated by a US-ASCII
> tab character. The sequence of fields must be in this order:
> subject, author, date, message-id, references, byte count, and
> line count. Other optional fields may follow line count. These
> fields are specified by examining the response to the LIST
> OVERVIEW.FMT command. Where no data exists, a null field must
> be provided (i.e. the output will have two tab characters
> adjacent to each other). Servers should not output fields for
> articles that have been removed since the overview database
> was created.
> Note that all US-ASCII tab characters in any header data that
> is returned will be converted to a single US-ASCII space
> character. A contiguous sequence of US-ASCII non-printing
> characters will be compressed to a single US-ASCII space
> character in any output response.
The output consists of one line per article, sorted in numerical
order of article number. Each line consists of a number of fields
separated by a US-ASCII tab character. The first 8 fields MUST be
the following, in order:
article number, subject, author, date, message-ID, references,
byte count, line count
The content of any subsequent field is given by the response to the
LIST OVERVIEW.FMT command. A field may be empty (in which case there
will be two adjacent tabs, and a sequence of trailing tabs may be
omitted). Any sequence of US-ASCII non-printing characters (including
tab but excluding space) in a field MUST be replaced by a single space.
The server SHOULD not produce output for articles that no longer
Actually, even better wording would be to give a proper syntax for these
responses, using RFC 2234.
I've made a number of assumptions in this rewording; someone should check
that I'm correct.
Thought concerning Usefor's deliberations: are the contents supposed to be
returned before or after folding ? Before or after stripping of comments ?
Should the response from LIST OVERVIEW.FMT include "Subject:" etc ? What
about the article number ?
> 9.4.9 PAT
> PAT header range|<message-id> [wildmat[ wildmat"]]
I take it the " is a typo.
> additional argument consisting of one wildmat or two or more
> wildmats separated by a space may be specified. If there are
> no additional argument, a wildmat "*" is the default.
Additional arguments consisting of one or more wildmats, separated
by a space, may be specified. The default is the single wildmat "*".
Nowhere does it say that the range argument applies to the currently
> Successful responses start with a 221 response followed by
> article number, an US-ASCII space, and the header from that
> message in which the argument pattern matches the contents of
> the specified header line.
A successful response consists of a 221 code followed by the output
from the command. The output consists of one line for each article
where the relevant header line matches one or more of the wildmats.
The line consists of the article number, a US-ASCII space, and then
the contents of the header (without the header name).
Note that the present wording implies that the output is on the same line
as the 221 code.
[The following applies to all commands with multi-line output.]
> Once the output
> is complete, a period is sent on a line by itself.
You know, this wording appears in a number of places, yet when we say it
we never talk about stuffing lines that begin with dot with an extra dot.
The last but one paragraph of section 4 adequately explains how multi-line
responses are formatted, including the trailing dot. Having this wording is
just confusing - a naive server implementer could be forgiven for thinking
that the output be:
221 1234 Subject of 1234
1234 Subject of 1235
where the .. is the "period is sent on a line by itself" and the . is the
terminating octet described on page 3.
Why not be consistent with section 4 and describe the response like this:
A successful response is indicated by a 221 response code. This is
a multi-line response, and each additional line of output corresponds
to an article where the relevant header line matches one or more of
the wildmats. Each line consists of the article number, a US-ASCII
space, and then the contents of the header (without the header name).
That's it; no need to mention the trailing dot.
The responses section for each command could reasonably indicate whether
each response was single- or multi-line (perhaps by putting "[M]" in front
of, or after, the present description).
> [S] 221 Header Follows
> 3000234 I am just a test article
> 3000237 Re: I am just a test article
> 3000238 Ditto
Please can we either omit the blank lines or put an [S] at the start of
every line of output ?
> 10. The CONCLUSION Step
> 10.1 QUIT
> The server process MUST acknowledge the QUIT command and then
> closes the connection to the client.
> 11. Other Keywords
> There are other keywords that may be used at any time between
> the beginning of a session and its termination. Using these
> keywords do not alter any state information, but the response
s/do not/does not/
> 11.1 DATE
> that might be useful when using the NEWNEWS command (see
> section 0).
Section 0 ?
> 11.1.2 Example
> [S] 200 NNTP Service Ready
> [C] DATE
> [S] 19990623135624
This does not match the specification.
Do we actually need the server 200 response in these examples ? It tends to
imply that the command is only allowed as the first thing in a session.
> 11.4 NEWNEWS
> NEWNEWS newsgroups date time [GMT]
> A list of message-ids of articles posted or received to the
> specified news group since "date" will be listed.
s/group/group or groups/
> Note that an empty list (i.e., the text body returned by this
> command consists only of the terminating period) is a possible
> valid response, and indicates that there is currently no new
Can the same ID appear more than once in the response ? Is there any
significance to the order of the lines in the response ?
> 12. Framework for NNTP Extensions
> . any new parameters the extension associates with any other
> pre-existing NNTP verbs
s/verbs/commands/ or s/verbs/keywords/ (can we be consistent about this ?)
> . the increment by which the extension is increasing the maximum
> length of the any commands over that specified in this
. any increase in the maximum length of commands over the value
specified in this document.
> Additional verbs are bound by the same rules as NNTP keywords;
> specifically, verbs beginning with "X" are local extensions
> that MUST NOT be registered or standardized and verbs not
> beginning with "X" must always be registered.
s/always be registered/be part of a registered extension/
> 13. Augmented BNF Syntax for NNTP Commands
> This syntax defines the non-terminal "command". The non-terminal
> "parameter" is used for command parameters whose syntax is
> specified elsewhere. The syntax is in alphabetical order.
Is alphabetical order really best ?
> 16. References
> 2 Yergeau, F., "UTF-8, a transformation format of ISO 10646",
> RFC 2278, Alis Technologies.
> 17. Acknowledgments
> The author gratefully acknowledges the work of the Marshall
> Rose & John G. Meyers in RFC 1939
Colour me puzzled: RFC 1939 is POP3, and I don't see the relevance.
> This work was precipitated by the work of various newsreader
> authors and newsserver authors,
Is "precipitated" the word you want here ?
| It seems that some clients are currently using the HELP command as a
| no-operation to keep idle connections open.
| Do we have anything to say about this practice?
I wouldn't have thought so. We can't prevent people doing it, though I
wouldn't particularly want to encourage it.
We don't have a NOOP command (something that I would have thought was a
good idea) but I don't know if the rules this group works under allows us
to look at adding one. And as I pointed out, we don't have *any* wording
about responses to unknown commands.
Clive D.W. Feather | Work: <clive at demon.net> | Tel: +44 20 8371 1138
Internet Expert | Home: <clive at davros.org> | Fax: +44 20 8371 1037
Demon Internet | WWW: http://www.davros.org | DFax: +44 20 8371 4037
Thus plc | | Mobile: +44 7973 377646
More information about the ietf-nntp