- = to do, + = in progress, * = done, x = dropped

TO DO BEFORE 1.9.30:

* fix TOCTOU race in postarticles(): an article may show up after STAT
  and before POST, this way, an article may show up in failed.postings.
  <Ralf Wildenhues>.
  strategy #1: parse error reply
  strategy #2: bounce (discouraged)
  strategy #3: stat again to see if it's our article or a collision
* check how we want to deal with news groups in upper case (Jan Knutar)
  can only happen when same upstream server has alt.2600.aol and alt.2600.AOL.
  Strategy: track insertgroup() stuff, and in face of conflict, go for
  the group with fewer upper case characters.

TO DO AFTER 1.9.25:

* only_post_groups
x Fix make distcheck with local PCRE (when no system PCRE is avail)
x take David Tarin's information to add to the INSTALL document:
  PCRECONFIG, default library path.

TO DO AFTER 1.9.24:

* adjust INSTALL for setup-daemontools.sh
* Fix INSTALL for daemontools/ucspi-tcp
* Update all documentation
* <20020717184700.GA13378@uni-bonn.de> (msysconfdir and subst issue)
* Fix bug reported by Shaul Karl to Mark Brown, who sees that setting
  the hostname in the config file will not work for leafnode, as the
  hostname is validated BEFORE the configuration is read.
* Fix build for doc_german (subst will not be updated), improve.
* fetchnews -f: save oldactive when active cannot be updated
* XHDR with invalid range broken
* Update PCRE to 3.9 (or drop it)
* fix all the archaic PCRE config stuff
* detect when libpcre3 is installed but not libpcre3-dev (Debian Woody,
  reported by Stefan Denker)

TO DO AFTER 1.9.22:

* document FQDN requirement better
* nuke tmpfile() and use mkstemp in $spooldir/temp.files
* check if new fetchnews behaviour works properly, check for unfolding
  of articles during post and fetch.
* Ralf Wildenhues: when applyfilter removes all articles in a group, the
  active file is not updated properly
* getaline() returns truncated lines at EOF. Does this hurt? (Mirko Liss,
  de.comm.software.newsserver, 2002-06-18)
* Bug by Werner Holtfreter: groups not in active are not expired.
* fetchnews: article /path/to/... contained illegal headers
  this turned out to be a bug with filtering on mandatory headers
* fetchnews: lock file is abandoned across fork()
* fetchnews exit code always 0

TO DO BEFORE 1.9.21:

* Ralf Wildenhues: update overview (applyfilter).
* fetchnews does not stop if the disk is full (Michael O'Quinn,
  <3C9CD96C.BeroList-2.5.9@wpxx02.toxi.uni-wuerzburg.de>)
* fetchnews forgets the server high water marks when a group expires
  from interesting.groups (Michael O'Quinn,
  <3C9CD96C.BeroList-2.5.9@wpxx02.toxi.uni-wuerzburg.de>, The Energizer
  Bunny thread.) Worked around by clamping maxage.
* Thorsten Gunkel: crash in l. 204 of activutil.c, g is NULL
  (he misconfigured his server and emptied the groupinfo file).
* To address Michael O'Quinn's problems, do:
  1. make leaf.node/SERVERNAME files unbuffered or line buffered
  2. read and merge in the complete lines of the SERVERNAME~ file if
     that's newer than the SERVERNAME file.
* change response from 220 N <MID> to 220 0 <MID>

TO DO BEFORE 1.9.20:

+ take in doc_german again, ask Alexander Reinwarth for updates?
* add tcpd/inetd documentation
* Ralf Wildenhues: delaybody and current ARTICLE . <MID> may still mark
  the wrong article for download if in a different group.
* add license to leafnode.h
* check licenses/credits
* fix texpire documentation: we expire article-based, not thread-based
* fix RPM building
* document new out.going behaviour (amend to newsq man page?)
* Ralf Wildenhues: XOVER 1- fails, XOVER 1 or 1-1 ok for pseudogroup
* jom1@voonoo.net: delposted is not as bad as I think
* document or fix left-behind lock files
* check gmtoff signs (2.0b8_ma* had bugs here)
* document impact of XOVER addition for distributors' updates
* Mark Brown: requiring FQDN for lock file breaks Debian
  (internal error in lockfile -- to fix)
---------------------------

This file is both a buglist and a wishlist. Comments are appreciated.

fetchnews:
=========
- empty groups are considered new:
  skipping articles 10895-10903 inclusive (initial limit)
  comp.os.linux.announce: considering articles 10904-10953
  comp.os.linux.announce: 50 articles fetched, 0 killed
- initial limit is considered when a group already exists if it is
  completely empty
- speed: 960 sec for 463 articles fetched, 1964 killed (070799,
  version 1.9.3b6, debugmode off), i.e. approx. 0.5 articles/second.
- speed: 250 sec for 498 articles fetched, 374 killed (151298, version 1.8,
  debugmode off), i.e. approx. 2 articles per second (probably faster if
  filtering is switched off).
- fetch sometimes deletes articles (?, probably this is the update of
  the .overview file which means that it would be a good idea if texpire
  would do a nice update of that.)
- articles are possibly lost when incorrectly linked (i.e. if
  /var/spool/news/message.id/xxx/<bla@fasel> is already present
  but /var/spool/news/news/group/name/nnnnnn is not).

nntpd:
=====
- Memory leak in nntpd.

texpire:
=======
- let texpire delete uninteresting groups immediately?
- texpire doesn't expire threads but works more-or-less ordinarily???
  (check the source again)
- BUG: texpire has some problems when files have *very* different numbers:
  malloc(1020556560) failed: Reading articles to expire (bug report by
  Karsten Rothemund <karo@Worf.etechnik.uni-rostock.de>, 240798).
  The problem can be remedied by calling find on the particular directory;
  for instance, when texpire would crash while expiring de.test, you
  could do
	find /var/spool/news/de/test -mtime +10 -exec rm {} \;
  (suggested by Joerg Dietrich <uzsv7x@ibm.rhrz.uni-bonn.de>)
  The same problem occurs when writing overview files (reported by
  Giulio <giuliox@tin.it>, 030299).
