[NNTP] Article Numbers Becoming Invalid (RFC 3977)

Sabahattin Gucukoglu mail at sabahattin-gucukoglu.com
Sun Dec 27 17:53:35 PST 2009


On 28 Dec 2009, at 00:07, Julien ÉLIE wrote:
>> Most of your questions have been answered, but the usual way to do this is:
>> 
>>   GROUP a.group
>>   ARTICLE
>> 
>> The ARTICLE might give a 420 failure response - don't worry if it does.
>> Then repeat the following pair of commands:
>> 
>>   NEXT
>>   ARTICLE
>> 
>> until you get a 421 response from NEXT.
> 
> Interesting.  It is indeed how it is implemented in INN 2.5.2 (previous versions
> were improperly returning 423 instead of 420):
> 
> GROUP fr.test
> 211 7303 3716 11692 fr.test
> ARTICLE
> 420 No current article
> NEXT
> 223 3723 <20071207020930.77430463 at lavignotte.invalid> Article retrieved; request text separately
> 
> 
> 
> Yet, I do not understand the following paragraph in RFC 3977:
> 
> 
> 6.1.3.  LAST
> 
> 6.1.3.2.  Description
> 
>  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.
> 
> 
> 6.1.4.  NEXT
> 
> 6.1.4.2.  Description
> 
>  In all other aspects (apart, of course, from the lack of 422 response),
>  this command is identical to the LAST command (Section 6.1.3).
> 
> 
> 
> 
> Isn't there a contradiction between the fact that the current article
> number MUST be set to the [next] article in the newsgroup (and therefore
> returning 423) and the fact that the current article number is invalid
> (and therefore returning 420)?

My feeling exactly.  The article pointer can't be manipulated while invalid according to spec, and it's only ever valid if set explicitly.  So how do you find the first valid article number without setting it?

Besides, in my program there has to be some minimum article per invocation, user set or script set on exit from the last round.

Hard to believe newsreaders even existed before the times of xover and xhdr and wildmats.  Did they really step article by article, retrieving headers and noting article numbers?  Wow!

Cheers,
Sabahattin



More information about the ietf-nntp mailing list