jumaris / indyproject

Automatically exported from code.google.com/p/indyproject
0 stars 0 forks source link

Update TIdNNTP and TIdNNTPServer to use 64-bit article numbers #207

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
According to RFC 3977 Section 6 (http://tools.ietf.org/html/rfc3977#section-6), 
article numbers can increase until they reach 2,147,483,647, the upper bounds 
of a 32-bit Integer. While servers are not allowed to send higher values, the 
RFC is open to this possibility and advises implementors to have internal 
structures prepared to hold higher values. In fact, some high-volume newsgroups 
have already exceeded the boundary (for instance, 
http://en.wikipedia.org/wiki/Alt.binaries.boneless) and some newsreaders have 
issues handling this. Some of the most popular news servers, like GigaNews, are 
already sending higher bound numbers in unsigned 64-bit format and are 
recommending for newsreaders to implement this as well (see 
http://www.giganews.com/news/article/64-bit-Usenet.html).

When the number reaches 32-bit limit odd things may happen in newsreaders - 
they may stop accepting new articles. Some servers might (not sure) wrap 
article numbers to reset the count. But most popular ones have chosen not to do 
so but continue increasing the number and this is likely to happen for others 
as well.

TIdNNTP and TIdNNTPServer use 32-bit Integers for holding article numbers.  
This needs to be changed to Int64, or even UInt64 on versions that support it.

Original issue reported on code.google.com by gambit47 on 6 Dec 2011 at 6:28

GoogleCodeExporter commented 9 years ago
Implemented in SVN revision 4718.

Original comment by gambit47 on 24 Dec 2011 at 11:06