Spam:****, [NNTP] Thoughts on article number resetting/rollover

Steve Walker nntp at nntpserver.com
Thu Aug 11 09:53:39 PDT 2005


Ken Murchison wrote:

> The whole discussion of the 2^32 limit for article numbers and 
> rollover got me thinking a little.  Rolling the numbers over is really 
> no different than if the server unilaterally resets the article 
> numbers for some reason (server crash, software change/upgrade).  
> Obviously admins try to avoid this at all cost, but I'm sure it 
> happens.  In either case, the server should have some mechanism to 
> tell the client that the article numbers have changed, and that any 
> cached data that it has is invalid.

The wording in the current proposal expressly forbids reseting the 
article numbers....

>6. The final type of key is the arrival timestamp, giving the time that
>   the article arrived at the server.  The server MUST ensure that
>   article numbers are issued in order of arrival timestamp; that is,
>   articles arriving later MUST have higher numbers than those that
>   arrive earlier.  The server SHOULD allocate the next sequential
>   unused number to each new article.

Any reset or wrapping is a violation of the MUST above.  This is why I said
this RFC is completely broken.  People are forced to violate it in one 
way or the other.

>   Article numbers MUST lie between 1 and 4,294,967,295 inclusive.  The
>   client and server MAY use leading zeros in specifying article
>   numbers, but MUST NOT use more than 16 digits.  In some situations,
>   the value zero replaces an article number to show some special
>   situation.

The two MUST's together cause a deadlock.

Personally I really can't see why anyone would have a problem with just 
changing the limit above to 2^64-1. It doesn't break anything that 
wasn't already going to eventually be break and it allows everyone the 
chance to prepare for the future.

Clive ask for wording so here goes:

>   Software MUST be able to correctly process article numbers between 1 and 
>   4,294,967,295 inclusive and SHOULD be capable of processing article 
>   numbers up to 2^64-1.  The client and server MAY use leading zeros 
>   in specifying article numbers, but MUST NOT use more than 20 digits.
>   In some situations, the value zero replaces an article number to show 
>   some special situation.

If anyone is really worried about detecting if a server is using 64 bit 
numbers you could add something like
this so a client knows as soon as it issues a GROUP command if the range 
is beyond it's capabilities.

 > Clients that convert article numbers into internal binary data should 
use 64 bit unsigned
 > integers if the server returns any zero padded article number or 
range component with a
 > length greater than 16 octets and less than or equal to 20 octets.
 >
 > Servers that offer articles with numbers greater than 2^32-1 MUST 
zero pad all
 > article numbers or ranges in command responses to a total  length 
greater than 16 octets
 > and less than or equal to 20 octets.

A 32 bit client still can't read 64 bit article numbers, but at least 
one person seem concerned
that a client would not know if their internal binary conversion was 
invalid.  I personally think a
good atoi function that returned MAXINT as an overflow error would be 
simpler.

Steve Walker




More information about the ietf-nntp mailing list