[NNTP] Article Numbers Becoming Invalid (RFC 3977)

Julien ÉLIE julien at trigofacile.com
Sun Jan 3 04:05:26 PST 2010


Hi Russ,

> 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.

OK, I understand.
However, such an implementation is difficult on distributed servers
(a common active file or different readers/storage servers).  The reader
would have to be able, when it receives a GROUP command, to update the
active file, which can be maintained in another server.

As the low water mark cannot decrease, LIST ACTIVE, LIST COUNTS, GROUP
and LISTGROUP have to use similar low water marks.


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

With the as-if principle, it then allows a server to say the low water
mark is 10 whereas the first existing article is 12.
Therefore, after GROUP, 10 is the current article and ARTICLE answers 420.
As the current article is required to point to the reported low water mark,
it cannot be set to 12.


> 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.

Re-reading all uses of the word "invalid" in RFC 3977, it appears that
it always refers to the state you mention (entering an empty group)
except for this one:

   Note that a previously valid article number MAY become invalid if the
   article has been removed.  A previously invalid article number MAY
   become valid if the article has been reinstated, but this article
   number MUST be no less than the reported low water mark for that
   group.

The validity of the pointer MAY change.


OK, everything is coherent now.
With the reading you suggest, GROUP, LAST and NEXT are coherent.
It is true that GROUP normally requires the current article pointer
to be set to an existing article (the first article, the reported low
water mark).

Consequently, the only remaining point is that stuff about valid/invalid
pointer.
I think the whole point is that after entering a non-empty group, 420
is not a valid answer to ARTICLE without argument.  It should have been 423
as it was the case in RFC 977.  And it is also what is implemented in the
NNTP reference implementation, INN, and probably other news servers.

I see clearer now after our discussion:  the problem does not come from
the low water mark, the definition of the first article in the group,
how GROUP works, etc.
These were wrong directions I was looking at, which were only consequences
of a more fundamental issue.

The problem comes from the fact that the 420 response code now shares
two meanings in RFC 3977:  the 420 and 423 response codes of RFC 977.
And that merge in the response codes was not entirely dealt with throughout
the new specification.

Maybe it could be a thing to review when, and if, RFC 3977 is moved
into a draft standard (?)

-- 
Julien ÉLIE

« N'écoutant que son courage qui ne lui disait rien,
  il se garda d'intervenir. » (Jules Renard) 



More information about the ietf-nntp mailing list