K 10
svn:author
V 6
kondou
K 8
svn:date
V 27
1998-08-26T16:54:58.000000Z
K 7
svn:log
V 1708
nnrpd/article.c:
nnrpd/nnrpd.c:
	- From: "Scott Gifford" <sgifford@tir.com>
	- Here is a detailed description of the changes I made, followed by the
	  patch:

	  First, CMDxover uses CMDgetrange to parse the article range.
	  CMDgetrange was looping through every single article in the group
	  once to get some overview information, and then again to set the
	  token information.  This made the initial delay for XOVER on a large
	  group really really long, sometimes over a minute.  I fixed this by
	  deferring both of these lookups until they need to be done.  This
	  speeds things up by not bothering to look up articles unless they
	  are needed, and also defers the delay so that it doesn't cause
	  timeouts.

	  I also found some severe problems in the ARTfind routine.  If you
	  looked up the same article twice, the second one would miss the
	  ARTcache, and have to be searched for.  Because CMDxover does an
	  ARTfind twice for every article, the cache was missing at least half
	  the time.  I fixed this by having the cache code check ARTcache
	  where it is currently at before incrementing it.  I also added some
	  code to quickly detect ARTfinds on missing articles, and not lose
	  ARTcache in the process.  Finally, I added some code to do an early
	  check to see if they were ARTfinding the first article for this
	  group, becuase it is a fairly common thing, quick to check for, and
	  is the worst case for ARTfind's binary search.  All in all, in my
	  tests, XOVERs of all the articles in a group will hit the ARTcache
	  every single time, and other XOVERs will only miss for the first one.
nnrpd/article.c:
nnrpd/misc.c:
	- 'article <msgid>' for traditional did not work.

END
