[NNTP] Article Numbers Becoming Invalid (RFC 3977)

Russ Allbery rra at stanford.edu
Sat Jan 2 17:04:11 PST 2010


Julien ÉLIE <julien at trigofacile.com> writes:

> Anyway, I believe it cannot always be done in practice.  CNFS buffers
> are self-expiring and it would need to continuously update low water
> marks.  LIST ACTIVE should give up-to-date low water marks.  (As well as
> accurate high water marks.)

The implementation I had in mind would be to do the same thing that NEXT
and LAST did with the low- and high-water marks on group entrance.  Start
from the numbers from the active file, determine whether the article
exists, and if not, increase or decrease the number and try again.

But yes, there's the as-if principle (sorry, not as-is).

> OK.  Then the only remaining issue I see is in Section 6.1.3.2 of RFC
> 3977 regarding the LAST command:

>   If the currently selected newsgroup is valid, the current article
>   number MUST be set to the previous article in that newsgroup (that
>   is, the highest existing article number less than the current article
>   number).  If successful, a response indicating the new current
>   article number and the message-id of that article MUST be returned.

>   [...]

>   If the current article number is already the first article of the
>   newsgroup, a 422 response MUST be returned.  If the current article
>   number is invalid, a 420 response MUST be returned.

> I think the last sentence should be "If the currently selected newsgroup
> is empty, a 420 response MUST be returned."

> Otherwise, LAST is supposed to send 420 after ARTICLE has sent 420
> because of that ambiguous notion of "invalid" (which is now 420+423).

As near as I could tell from re-reading, I think the word "invalid" in
both NEXT and LAST refers to the state of the article number after
entering an empty group, so yes, I think that's what was meant.  Although
there's an edge case here so we have to be careful about reading.  LAST
returns 420 iff the article number is invalid, not just if the group is
empty.  If you enter a group with one article, and that article is then
cancelled (making the group empty), LAST should still return 422.

> Incidentally, if the currently selected newsgroup is empty and an
> article arrives in it, we cannot retrieve it without reselecting the
> newsgroup.  ARTICLE will answer 420 (no valid pointer).  So will LAST.

Well, one could select the article by specifying it by number (which one
could have obtained from OVER, for instance), and then the article number
would be valid.

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


More information about the ietf-nntp mailing list