[NNTP] Article Numbers Becoming Invalid (RFC 3977)

Julien ÉLIE julien at trigofacile.com
Sat Jan 2 01:54:42 PST 2010


Hi Russ,

>> It is the same thing that happens when you send a GROUP command and the
>> first valid article in the newsgroup is not the reported low water mark.
>> The article pointer points to the reported low water mark, and is
>> therefore invalid.
>
> This shouldn't happen.  GROUP is supposed to find the first valid article
> on entry.  (The article may become invalid later, of course.)

I agree it is the best thing to do.
And already done by the NNTP reference implementation.  (To be more accurate,
it is not GROUP that does at -- because the current article pointer is set
to 0 (note that the invalid pointer is -1) -- but ARTICLE that will use
either the current article pointer or the first valid article after
the current article pointer.)

If it is really what a news server is supposed to do, then RFC 3977 needs
to be amended.  Only one additional word is needed:  "the current article
number MUST be set to the first *valid* article in the group".
Because the first article is currently defined as the reported low water
mark -- which is also what INN implements.

Let's wait for Clive's decision about the path we should follow.



>> Is it how the NNTP protocol is supposed to work?
>> If that's the case, then RFC 3977 should be amended to mention that...
>
> Well, it isn't what we standardized, so changing it would require changing
> the protocol.  I suspect that at this point it's better to go with what we
> standardized, even if that means that reference NNTP isn't compatible in
> that one case.

There is at least a second case.

I see that RFC 977 defines two forms for ARTICLE:

   When the ARTICLE command is
   followed by a message-id in angle brackets ("<" and ">"), the first
   form of the command is used; when a numeric parameter or no parameter
   is supplied, the second form is invoked.

whereas RFC 3977 separates the form with an article number and without it:

   Second form (article number specified)
     223 n message-id      Article exists
     412                   No newsgroup selected
     423                   No article with that number

   Third form (current article number used)
     223 n message-id      Article exists
     412                   No newsgroup selected
     420                   Current article number is invalid


The NNTP reference implementation, and also INN, cas use 420 and 423 for
what is now called the third form.  It appears that the concept of
"invalid" is not the same as it used to be.

I now understand that thing (written here last week):

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Interesting.  It is indeed how it is implemented in INN 2.5.2 (previous versions
were improperly returning 423 instead of 420):
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

I realize that in fact, the behaviour of INN was correct about 420 and 423.
It was not an improper use of them.  The change is only done because the NNTP
protocol has changed.

Previously (RFC 977):

ARTICLE
223 1 <mid at example>
ARTICLE
423 No article with that number

Now (RFC 3977):

ARTICLE
223 1 <mid at example>
ARTICLE
420 Current article number is invalid


Well, I agree it is not a big deal.  I just hope readers cope with it, and
were not expecting 423.
Note that after (X)OVER, which returns article #1 is here, they usually
send "ARTICLE 1" -> therefore 423, because an article number is specified,
if the article is no longer present.

-- 
Julien ÉLIE

« Hey, I had to let awk be better at *something*... » (Larry Wall)



More information about the ietf-nntp mailing list