KNOWN BUGS:
* The code sometimes uses timeout_client where it should use a server timeout.
|
20090406a.luascript: Changes since 20090403a.luascript:
- Bugfix: Disable PCRE body filters again (experimental feature in luascript
  branch), this does not work for instance with date-based filters. Bug report
  by Attila H., fix by Clemens Fischer.
- Bugfix: Header unfolding did not properly truncate the string if it was
  shortened. Identified by Clemens Fischer.
- Bugfix: "make update" (or rather lsort) was broken since 2004-01-16 and
  was unable to find groupinfo.old. Bug report by Adam Funk.
- Bugfix: "make update" executes update.sh under $(SHELL).
- Bugfix: update.sh is marked executable (likely fallout from the DARCS
  conversion 2008-11-13)
- Bugfix: update.sh now creates the lockfile with PID and ln, to fix a race.
- Bugfix: lsort now checks for write errors on output and exits with failure
  if there are any.
- Bugfix: update.sh now restores the old groupinfo file if lsort fails.
- Bugfix: update.sh now chmods to 0660 for consistency.
- Bugfix: "make update" now depends on lsort.
- Documentation: The update instructions printed by "make" have been updated.
- Feature: "script_lua = file" config file option (equivalent to -l file)

20090403a.luascript: Changes since 20090331a.luascript:
- Bugfix: RPM building did not package the lua files. Fix by Attila H.
- Bugfix: "make check" now works with ./configure --enable-lua
- Bugfix: fix a regression of 20090328 that broke Lua scripting totally,
  fix by Clemens Fischer.
- Change: the RPMs are now built against Lua.

20090331a.luascript: Changes since 20090324a+luascript:
- Workaround: 'Fix' compile on Debian Lenny by shuffling #includes. Thanks to
  Jeff Grossman and Clemens Fischer.
- Bugfix: Old-style PCRE filters could emit partial headers when handling
  folded headers. Regression in 'lua' branch. Thanks to Robert Grimm and
  Clemens Fischer.

20090324a+luascript: Changes since 20081229a:
- Change: refuse posting to newsd servers to prevent dupes, because 
  newsd replaces Message-IDs. The bug has been known and remained 
  unfixed to the newsd maintainers for years.
- Feature: The Lua-enabled version has preliminary support for per-group
  user authorization, requested by Eric S. Johansson.
- Feature: New global option "-l scriptfile" to specify non-default
  script files.

20081229a: Changes since 20081120a:
- Documentation: Improved the rnews(8) manual page.
- Change: when logging authentication trouble, don't use
  username@servername format but rather server: username "username", to
  make output less irritating. (Related support request by Gianni Piccini.)

20081120a: Changes since 20081110a:
- Default: the default spool directory is now /var/spool/leafnode.
  If you'd been using /var/spool/news as the default, you may need to
  move the spool (renaming the directory is usually sufficient).
- Bugfix: Make fetchnews's -f and -S options mutually exclusive, to
  prevent corruption of active file. Patch by Robert Grimm.
- Development: the repository was changed to GIT format. This may not be
  the final decision, but let's try it for a while. http://git.or.cz/
  Currently, the official repositories are:
  http://developer.berlios.de/git/?group_id=448
  http://mandree.home.pages.de/leafnode/leafnode-2.git/

20081110a: Changes since 20080904a:
- Documentation: filterfile(5) now refers to pcrepattern(3) instead of
  pcre(3). It mentions that patterns are case sensitive and (?i) can be
  used for caseless matching.
- Documentation: the "bad weather" example in filters.example was fixed,
  and prominent notices added that it's not meant to be used as is were
  placed in that file, filterfile(5) and leafnode(8).
  Found and debugged by Manfred Lotz and Robert Grimm.
- u_char has been replaced by unsigned char, to fix compilation issues
  on some systems (MacOS X 10.5). Some longer strings (> 509 chars), in
  usage notices, have been split, to support older compilers.

20080904a: Changes since 20080624a:
- Feature/fix: fetchnews -S <server> can now be specified more than once, to
  query some servers. Patch courtesy of Robert Grimm <rob@robgri.de>.
- Feature/fix: fetchnews -S <server>:<:port> syntax now supported.
  Patch courtesy of Robert Grimm <rob@robgri.de>.

20080624a: Changes since 20070602a:
- Change: Improve logging of feedtype (when posting).

20070602a: Changes since 20070108a:
- Bugfix: applyfilter no longer refuses to run in dryrun mode.
  Reported by Clemens Fischer. Broken since 2005-01-05 when
  applyfilter's -C option was removed.
- Change: Improve some applyfilter error messages.

20070108a: Changes since 20070101a:
- Bugfix: do not crash when using inverted newsgroup[s] = !... matches
  in filter files.  Reported by Wolfgang Bauer.
- Portability: Support compilation on systems with non-empty EXEEXT.

20070101a: Changes since 20061204a:
- Documentation: document no_direct_spool in leafnode(8). Found by
  Reiner Steib.
- Rebuild configure with autoconf 2.60 (not documented in released tarball).

20061204a: Changes since 20061010a:
- Bugfix: use proper prototype for mastring.h's mastr_cat.
  Reported by Georg Schwarz.
- Bugfix: if none of the upstream articles can be fetched for a certain
  group, do NOT skip to the next server. Found by Martin Brunzel.

20061010a: Changes since 20060831a:
- Documentation: in leafnode(8)'s section on groupexpire, list the
  precedence information. Found by Clemens Fischer.

20060831a: Changes since 20060826a:
- Change: an empty mail address in the moderators file means "no
  moderator set" and causes leafnode to post the article rather than
  mailing it to the moderator. Useful for gmane when the fallback
  moderator of ISC is set. Suggested by Matěj Cepl.
- Change: Support %% for INN compatibility.
- Documentation: add moderators(5) manual page.

20060826a: Changes since 20060711a:
- Bugfix: handle 400...499 codes in reply to ARTICLE command properly.
  Reported and fix tested by Martin Brunzel.
- Bugfix: if a fatal fetch error occurs, proceed to next server.
- Update: the leafnode.spec.in file was updated to fix rpmbuild issues
  and instruct the packager how the %doc-umentation can be relocated.
  Reported by Kevin Bulgrien.

20060711a: Changes since 20060706a:
- Bugfix: do not leak memory if global configuration parameters that
  read strings are specified more than once. Found by "Stroller".
- Bugfix: do not leak memory if reading new newsgroups fails or if the
  list of newsgroups ends prematurely. Found by "Stroller".

20060706a: Changes since 20060608b:
- Security Bugfix: Fix off-by-one error in getabufferedline().
- Bugfix: On corrupted active files without line breaks, avoid reading
  past the end of the file.
- Bugfix: Do not report "lock file exists" if locking failed for other
  reasons than a pre-existing lock. Found by Troy Piggins.

20060608b: Changes since 20060608a:
- Revert Bugfix from 20060608a for the nonce, since some parts of
  leafnode (lock file generation for instance) rely on the actual FQDN,
  causing more subtle failures (reported by Troy Piggins).
  Let's better fail up front.
- Documentation: Adapt the README-FQDN from leafnode 1, and convert the
  source to LaTeX to use the same workflow as for the FAQ.
  Comments, Questions, Amendmends are solicited, send them to the
  leafnode-list or to Matthias Andree.

20060608a: Changes since 20060428a:
- Bugfix: Make hostname=foo.example.org override broken local DNS
  configuration. Reported by Troy Piggins. [Reverted on 20060609.]
- Documentation: texpire -C now shows angle brackets and quotes around
  the message-ID.

20060428a: Changes since 20060424a:
- Forward port fqdn validation list from upcoming leafnode 1.11.6.

20060424a: Changes since 20060321a:
- Bugfix: re-read group.info or local.groups also if the st_dev field
  changes (because st_dev,st_ino uniquely identify files, rather than
  st_ino alone).
- Bugfix: changes to local.groups or active file are now listed in
  newnews and newgroups immediately, not just after some commands (such
  as LIST) or a server restart.
- Feature: differentiate between "cannot connect" and "timeout
  connecting".

20060321a: Changes since 20051115a:
- Feature: if group names are mentioned on the texpire command line
  (which must not contain -C), expire only said groups.
- Documentation: corrected rsync instructions in the FAQ.

20051115a: Changes since 20051113a:
- Change: let rnews call itself just "rnews" rather than echoing its
  path, for consistency with other programs.  Patch by Niels Baggesen.
- Documentation: Ship pre-built FAQ.pdf in the tarball.
- Bugfix: RPM build was broken after FAQ revision. Reported by Attila H.
- Bugfix: When an article (control article for instance) is not stored
  because it has no valid groups, properly read and discard message
  body. Reported by Patric Mueller.
- FAQ: rsync must be used with -H option (not -L).

20051113a: Changes since 20050914a:
- Bugfix: parse NEWNEWS and NEWGROUPS command properly.
  Patch by Niels Baggesen.
- Documentation: Revise FAQ (now in HTML and PDF formats), add information
  about copying the spool.
- Documentation: remove dontpost from manual page, no longer supported.
  (Users should use feedtype=none instead.) Found by Roi Dayan.
- Documentation: config.example now uses the .example TLD or 2nd level
  domain for all "server =" lines.

20050914a: Changes since 20050810a:
- Bugfix: Make -e actually work.
  SourceForge Bug #1248682, reported by Bodo Eggert.
- Logging: successful mail to moderator now logged at INFO priority,
  problems logged at ERROR priority (used to be DEBUG for both).
- Bugfix: let -e set (rather than toggle) stderr logging.
- Documentation: the filterfile(5) manual now mentions that the pattern=
  line follows the same quoting conventions as the main leafnode file.

20050810a: Changes since 20050514a:
- Bugfix: if getting the group returns "skip to next server", don't
  write a bogus article mark of 2^32-2 or 2^64-2 into the server's
  article mark file. Observed by Dietrich Schaffer.
- Bugfix: fetchnews now presents an error message to the user if the
  greeting banner code isn't 200 or 201. Reported by Werner Partner.

20050514a: Changes since 20050422a:
- Stability: If getting a non-text reply in response to ARTICLE, leave
  current server alone on the assumption we're out of synch and proceed
  to next.
- Bugfix: fetchnews now properly detects an empty upstream group.
  Reported by John Carlyle-Clarke.

20050422a: Changes since 20050412a:
- Bugfix: texpire can crash for some spool states (on incomplete
  groupinfo), reported by John Carlyle-Clarke.
- Documentation: new manual pages leafnode-version(1) and sendbatch(1),
  courtesy of Matěj Cepl of Debian.

20050412a: Changes since 20050324a:
- Feature: newsq -f will list the article bodies to be fetched in
  delaybody mode. Suggested by Cory C. Albrecht.
- Packaging: Drop obsolete README_FIRST file from .spec file to unwedge build.
  Reported by William Hooper.

20050324a: Changes since 20050321a:
- Documentation: manual pages have been revised, with some help from
  Dietrich Schaffer.
- Documentation: help output in programs has been revised.
- Bugfix: the deleted-articles journal was always empty. Reported by
  Jörg Lüders.

20050321a: Changes since 20050215a:
- INCOMPATIBLE Change: forward port configuration parser fix from
  leafnode-1.11, to allow the right hand side of configuration or filter
  file to be quoted, useful when the NUMBER SIGN character needs to be
  specified. This may require you to change the configuration when you
  are using NUMBER SIGN #, QUOTATION MARK " or BACKSLASH/REVERSE SOLIDUS \
  character on the right hand side (in passwords, PC regular expressions
  etc.) of a configuration line.
- Change: when deleting articles (supersedes, cancel, ...) and we don't
  rebuild the overview right away, store a line in a new file that marks
  the corresponding overview line invalid, so that the article is no
  longer offered in the overview. Reported by Jörg Lüders.
- Documentation: some parts of README* had been out of date and have
  been revised. Documentation flaws reported by Jens Kutilek.

20050215a: Changes since 20050110a:
- Bugfix: if log_poster_ip is enabled, strip existing
  X-Leafnode-NNTP-Posting-Host headers. Fixes Gnus newsreader warnings
  when superseding.
- Change: in postonly mode, log if there is nothing to post.

20050110a: Changes since 20050105a:
- Cleanup: Only use top-level Makefile.am, drop recursion.
- Bugfix: Make groupexpire = pattern -1 actually work. Bug reported by
  Raymond Scholz
- Bugfix: even if groupexpire is < 0 to mean "no expire", fix overview
  data and check group for consistency.
- Bugfix: do not abort in texpire when DEBUG_EXPIRE is set.

20050105a: Changes since 20050104a:
- Bugfix: delete_article also removes articles from in.coming directory
- Bugfix: store() does not create message.id link unless there was at
  least one valid newsgroup, also avoids writing empty Xref: header that
  confused delete_article()
- INCOMPATIBLE Cleanup: the half-working applyfilter -C mode is gone.
  texpire -C gets it right.

20050104a: Changes since 20050103a:
- Feature: texpire can now remove articles from the spool, new -C option.

20050103a: Changes since 20050102a:
- Change: obtain LISTGROUP article numbers directly from the directory
  rather than from the overview, to let cancel/supersedes take effect
  before the next texpire run. Suggested by Frank Wein.
- Bugfix: yesterdays' "do not crash if the groupinfo file is empty"
  brought back the malformatted line "#A " bug.

20050102a: Changes since 20041227a:
- Bugfix: fetchnews will only try to obtain low/high marks for a group
  if it matches the only_group_pcre, to avoid wasting time on data that
  is discarded right away.
- Bugfix: do not crash if the groupinfo file is empty
- Bugfix: handle article pointer properly for new postings in local
  groups. Reported by Frank Wein.
- Change: checkpoint the ./configure cache before common failure points

20041227a: Changes since 20041215a:
- Bugfix: Fix massive memory leak in "GROUP" command and other commands
  that read the overview data. Reported by Lloyd Zusman.
- Bugfix: Free filter memory at program exit.

20041215a: Changes since 20041213a:
- Feature: when a fresh post matches a filter, reject the post.

20041213a: Changes since 20041113a:
- Bugfix: get rid of cosmetic bug "Groupinfo file damaged, ignoring line: 18"
- Change: when complaining about damaged groupinfo file, print the line
  number and encapsulate the line in double quotes.
- Change: More useful logging when getting the range of articles in a
  group, now includes the server name.
- Change: Upstream repository switched from CVS to DARCS, http://darcs.net/

20041113a: Changes since 20041007a:
- Speedup: the active file now has a header line that contains the number
  of lines. leafnode can read both the old format (requires two passes)
  and the new format (requires one pass).
- Speedup: the active file is now mmapped, rather than read, into memory.
  Patch by Robert Clark.

20041007a: Changes since 20041006a:
- Change: fetchnews will treat groups as moderated if the reported status
  flag is 'y' but the group has the tag ' (Moderated)'
- Change: leafnode will no longer print the moderator of local groups in
  the newsgroup list.
- Change: leafnode will make sure that a moderated group has the 
  ' (Moderated)' tag in its description.

20041006a: Changes since 20040920a:
- Feature: texpire offers an "-a" option to expire article based
  (as leafnode-1 did) rather than thread-based.
- Documentation: README* provided an invalid hosts.allow example that
  used the prefix length rather than the netmask; tcpd only understands
  the latter. Reported by Gundemarie Scholz.

20040920a - Changes since 20040916a:
- Bugfix: 20040916a broke article retrieval for many newsreaders.
  Reported by Robert Clark and Jack Raats.

20040916a - Changes since 20040915a:
- Change: leafnode, the NNTP daemon, will no longer update overview
  information, in an attempt to fix Yvon Thoraval's slowness observed on
  MacOS X. If the groups appear inaccessible, running either fetchnews
  or texpire should fix this.

20040915a - Changes since 20040823b:
- Bugfix: A timeout while connecting to a server (default 30 seconds)
  caused fetchnews to abort and print "Alarm clock."
  Reported by Michael Rulov.
- Change: the fetchnews connect timeout now applies to each of the
  server's addresses.
- Documentation: The texpire manual page was revised and updated.

20040823b - Changes since 20040823a:
- Bugfix: Fix assertion failure. The "failure" case was actually an
  expected failure and should not cause an abort. Thanks to Jack Raats.
- Documentation: fill in missing ChangeLog information.

20040823a - Changes since 20040818a:
- Bugfix: only_group_pcre now also applies to delaybody groups. Reported
  by Cory C. Albrecht.
- Bugfix: diagnose errors when getting articles marked for download
- Feature: new option timeout_delaybody. Suggested by Cory C. Albrecht.
- Change: delaybody article numbers are now stored with a time stamp
  rather than a retry count and subjected to timeout_delaybody,
  groupexpire or global expire timeouts.
- Cleanup: Make debug output of configuration parser consistent.
- Documentation: revise hostname documentation
- Documentation: revise filterfile manual page
- Documentation: add missing timeout_client documentation to manual
  page.

20040818a - Changes since 20040813a:
- Feature: forward ported the "noread" feature from leafnode-1,
  suggested by Cory C. Albrecht.
- Feature: Retry fetching bodies of delaybody articles only four times,
  then give up.

20040813a - Changes since 20040513a:
- Bugfix: texpire will now properly repair hard links of cross-posted
  articles. Bug reported by Jeff Grossman.
- Documentation: The extraneous "/leafnode" component was removed from
  the path names in the manual. Reported by Cory C. Albrecht.
- Cleanup: The code is now valid C and C++.

20040513a - Changes since 20040510a:
- Bugfix: fetchnews will try authentication when GROUP command replies 480.
- Bugfix: bogus "too few fields in DATE reply" in debug mode.
- Bugfix: plugged some memory leaks.
- Cleanup: fchmod bug report message revised to include "file
  descriptor".

20040510a - Changes since 20040326a:
- applyfilter crashed when an article had the "Message-ID" header in
  different case, for example, "Message-Id". Reported by Robert
  Marshall.
- Do not run chmod -R on the spool unconditionally, it's too expensive.
  Just print a message what to type.

20040326a - Changes since 20040305a:
- VERSIONS 20040319a AND 20040324a HAVE BEEN WITHDRAWN.
- Documentation: document logstderr instead of the improper
  ln_log_stderronly. Patch by Thomas Schwinge.
- Documentation: mention there was an internal change to stringlist
  handling before 20040227a. This triggered the XPAT/XHDR/NEWNEWS
  regression.
- Bugfix: XPAT, XHDR, NEWNEWS caused a segmentation fault when issued
  without argument (slrn bug triggered by ESC 1 ESC p or ESC 2 ESC p for
  instance). Reported by Robert Grimm.
- Leafnode now makes all directories group writable by default but
  withdraws *all* world permissions. To meddle with the spool, put the
  user to meddle in the same group that the news user uses as primary
  group. If you do this, YOU take the blame for all security issues,
  insecure scripts and all that, particularly when using CGI scripts
  or setgid flags.

VERSIONS 20040319a AND 20040324a HAVE BEEN WITHDRAWN.

20040305a - Changes since 20040227a:
- Robustness: Leafnode programs refuse to start when an unknown or
  unsupported authentication method is configured.
- Bugfix: Fetchnews will no longer move articles to failed.postings if
  it has been run with the "-S server" switch. (Report by Robert Marshall)
- Bugfix: Fetchnews will no longer abort when it needs to fetch the
  active file (-f option, timeout_active expired, fresh install) when
  the first server has the "noactive" option set.
- Portability: ugid_gset.c lacked #include directives, causing
  compile trouble. Fix by Ralf Wildenhues.

20040227a - Changes since 20040206a:
- Internal: The stringlist handling code internal to leafnode has
  changed and can expose bugs in other code.
- Feature: Supports PAM, based on a patch by Hynek Schlawack.
- Bugfix: all fetchnews functions now read from the network with a
  timeout limit.
- Bugfix: -M could only retrieve articles from the first server it had
  successfully connected to. Reported by Daniel Zwick. This bug has
  slept for a long time before being discovered recently.
- Robustness: the supplementary group ID list is now cut short when
  dropping root privileges. We don't want root's groups (for instance
  shadow on SuSE Linux) in our context.

20040206a - Changes since 20040129a:
- Feature: sanity check at initialization, to avoid operating on a bogus
  spooldir after updates.
- Cleanup: try to post article to all servers. Only when all servers
  could be reached, we consider moving the article to failed.postings.
  Based on a patch by Hynek Schlawack.
- Cleanup: do not log "article discarded" when it's already available
  upstream.
- Bugfix: -S server.name works again. Broken since 20040116a.
- Bugfix: some signedness fixes in printf (%lu vs. %ld).
- Cleanup: some dead code has been removed.
- Portability: Exclude SETVBUF_REVERSED check on Intel C++.

20040129a - Changes since 20040122a:
- Feature: newsq -c now checks the queue if there are articles to post.
  Exits 0 if there are, EX_UNAVAILABLE if there are not, EXIT_FAILURE on
  error.
- Feature: lsmac.pl now handles files as well as directories and allows
  for a -d option as ls does, that prevents descending into directories
  and prints the directories' times instead.
- Robustness: leaf.dnoe/server[:port]~ files are now line buffered to
  make them actually useful after a crash.
- Documentation: new README-leaf.node file.
- Feature: forward port "noactive" from leafnode 1.9.25+.
- Cleanup: drop support for "supplement" in configuration file.

20040122a - Changes since 20040119a:
- Feature: applyfilter -C message-ID [...] now cancels articles
  with given Message-ID.

20040119a - Changes since 20040116a:
- Update: the spec file was outdated.
- Cleanup: Internal Makefile.am and configure.ac cleanup. Watch for
  changes in the response to --prefix and/or --sysconfdir options.
- Bugfix: empty bindir/sysconfdir messed up in previous snapshot.
- Bugfix: fix the leafnode-version regression that showed in 20040116a.
Thanks to Daniel Zwick for his report and patient testing and
to Jörg Dietrich for finding the real bug.

20040116a - Changes since 20040108a:
- Bugfix: LIST NEWSGROUPS/LIST ACTIVE crashed when a non-existent group
  argument was given that was not a pattern. Patch by Hans-Jürgen
  Ficker.
- Feature: Spooldir can now be overridden by "-d dir" on the command
  line.
- Feature: localgroups=file in configuration file allows to override the
  location of the local.groups file. Default is compatible with past
  versions, $sysconfdir/local.groups.
- Cleanup: Lockfile is now hardcoded. It is leaf.node/lock.file relative
  to the current $spooldir.
- Change: Leafnode programs will only try to enforce their UID when
  started by the root user.
- Cleanup: TESTMODE preprocessor directive was removed, obsoleted by
  previous change.
- Robustness: GCC builds now try -Wformat=2 to enable more format string
  warnings.
- Bugfix: checkgroups now works even when options are present.
- Change: checkgroups can process multiple files in one go.
- Bugfix: fetchnews' "-F conffile" option did not work.
- Change: several internal cleanups and some refactorizations.
- Build: rebuilt with automake 1.8.2 and autoconf 2.59 

20040108a - Changes since 20031221a:
- Change: Log username and upstream server for authentication failures.
  Patches by Samuel Tardieu.
- Change: Better ./configure --help messages.
  Patch by Samuel Tardieu.
- Feature: log_poster_ip in a X-Leafnode-NNTP-Posting-Host header.
  Based on a patch by Samuel Tardieu.

20031221a - Changes since 20031218a:
- Change: list active and list newsgroups are now much more efficient
  when a pattern is given that does not contain wildmat meta characters.
- Change: list active.times is rejected with a 500 code for now.
- Change: let fetchnews print when and why it must refetch the active
  file at the next run.

20031218a - Changes since 20031203a:
- Change: texpire now prints why a particular group directory is not
  expired even though 0 articles are kept.
- Change: lsmac.pl now defaults to UTC and has a --local option to
  restore old behaviour (that used to be undocumented).
- Documentation: fetchnews(8) now documents group expiry.
- Documentation: lsmac.pl is now documented.
- Rebuild Makefile.ins with automake 1.8.

20031203a (was not announced) - Changes since 20031129a:
- Cleanup: (nntpd) Avoid extraneous fflush() that causes the status line
  and the following input to be sent in separate packets, adding packet
  overhead. Add nntpprintf_as for this purpose.

20031129a - Changes since 20031122a:
- Cleanup: Remove global variable "current_server".
- Bugfix: The previous cleanup also reinstates only_group_pcre matching
  for posted articles. Reported against 20031001a by Jens Nixdorf.

20031122a - Changes since 20031028a:
- Feature: applyfilter -c checks in -n mode if filters would match the
  files (rather than newsgroups) given on the command line.
  Suggested by Reiner Steib.
- Feature: applyfilter can now handle more than one newsgroup argument.
- Bugfix: Do not post unless we have an active file. Avoids a crash
  reported by Robert Marshall.
- Cleanup: Fetch active file before trying to post.

20031028a - Changes since 20031026a:
- Bugfix: Change "ulong" to "unsigned long" to make the package compile
  on FreeBSD. Reported against 20031019a by Jack Raats.
- Cleanup: Use rbtrees rather than custom unbalanced binary tree for
  reading the local groups.  -45 lines of code.
- Update: libredblack now at 1.3.

20031026a - Changes since 20031019a:
- Change: log all warnings when verbosity is > 0
- Bugfix: do not interpret group name that starts with a dot as the end
  of server output (fetchnews).
- Bugfix: refuse to add newsgroups with NULL components (leading or
  trailing dot or two adjacent dots).
- Change: Improve error reporting when a server disconnects.

20031019a - Changes since 20031009a:
- Robustness: Revamped applyfilter.
- Conformance: Reply 440 rather than 500 if user tries to POST in
  NOPOSTING mode.
- Bugfix: GROUP article number fixes, to avoid bogus new article
  "offering" in newsreader, reported by Reiner Steib.

20031009a - Changes since 20031001a:
- Bugfix: applyfilter no longer chokes on 0-sized articles and will
  unconditionally deleted them. Reported by Reiner Steib.
- Bugfix: leafnode was unable to retrieve pseudo articles with XOVER n
  or XOVER n- forms (XOVER n-m was fine).
- Bugfix: does not crash on a fresh install. Reported by Jürgen Salk.
- Documentation: fix typo (syslogd.pid) in README.html. Reported by
  Jürgen Salk.

20031001a - Changes since 20030814a:
- Bugfix: stricter GROUP reply parsing to avoid accepting negative
  values (seen on some INN with apparently corrupt overview).
- Bugfix: Initialfetch now also applies when the server resets its
  article counters (which it should never do), avoiding the check of
  thousands of articles. Reported by Reiner Steib.
- Change: double tolerance for decrease of article counters from 5 to
  10. When the number goes down by more than 10, re-fetch the group as
  though it were newly subscribed.

20030814a - Changes since 20030731a:
- Bugfix: Expire groups that are no longer in "active".
- Bugfix: Make Xref: based filters work in the XOVER phase already, to
  avoid downloading the article.
- Logging: Make filter logging more consistent.
- Documentation: Refine README*, mention syslog.conf edits.

20030731a - Changes since 20030728a:
- Bugfix: applyfilter removes filtered articles from the spool at large.
- Bugfix: applyfilter unfolds headers before applying filters. Reported
  by Reiner Steib.
- Bugfix: restore -f, -r and -n command line options for texpire.
  Reported by Michael Frotscher.
- Documentation: enhance filters.example. Courtesy of Reiner Steib.

20030728a - Changes since 20030716a:
- Bugfix: unfold header before applying filters. Reported by Reiner
  Steib.
- Feature: logstderr (in config file) -e (on command line),
  redirects all syslog to stderr, useful with daemontools or runit.
  Requested by Clemens Fischer. Only lightly tested.

20030716a - Changes since 20030714a:
- Bugfix: posting only tried the first server. Regression in 20030714a,
  reported by Jeff Grossman.
- Documentation: Clean up fetchnews.8.in, -B, -M, -N, -P and -R
  descriptions. New sections courtesy of Jörg Lüders.

20030714a - Changes since 20030712a:
- Bugfix: fix double free() in filter handling. Reported by Robert J. Clark.
- Bugfix: fix some memory leaks.
- Change: Post first, then fetch. Suggested by Jörg Lüders.

20030712a - Changes since 20030710a:
- Bugfix: Filtering by regexp was broken (inverse logic) unless
  DEBUG_FILTER was set (debugmode included the 32 flag).
  Regression introduced into 20030706a.

Changes since 20030706:
- Bugfix: LISTGROUP bugfixed, LISTGROUP - XOVER now works; no longer
  shows bogus pseudo article.
- Bugfix: all configure --with options are now --enable options, except
  --with-dmalloc.
- Cleanup: IPv6 configuration now uses a standard --enable option rather
  than env twiddling.
- Feature: Support for NOSUBSCRIBE environment variable.
  For documentation, see the ENVIRONMENT and README or README.html files.

Changes since 20030621:
- Cleanup: Support for PCRE before version 2.08 is gone, additionally,
  a version that installs "pcre-config" is required, which means you'll
  need to use PCRE 3.0 or newer.

2.0b-snapshot:
incompatible changes:
- backup.moderated is gone.
- the fqdn option is gone. Use hostname instead.
- Fix: timeout_active is back!
  This can cause "cannot stat /var/spool/news/leaf.node/:active.read: No
  such file or directory" to be logged until leafnode has succeeded to
  issue "LIST" on all its upstream servers. This message is harmless.
- IMPORTANT: leafnode now automatically appends "leafnode" to your
  sysconfdir. For backwards compatibility, ./configure will strip a
  trailing "/leafnode" or "/leafnode/" so you don't end up with your
  configuration in /etc/leafnode/leafnode/config.
- The "dontpost" configuration option is replaced by "feedtype=none".
- Debug logging to syslog and console is now only enabled if the
  debugmode figure is odd (1, 3, 5, ...), to cut down the size of
  logging in verbose mode somewhat.
- fetchnews now compares the local clock to the server's clock if the
  server supports the DATE command and complains if the two are more
  than 10 minutes apart.
- leafnode now resolves conflicts between a group name and the same name
  that only differs in upper vs. lower case, it prefers the lower-case
  version.

other changes:
- fix portability to Solaris 8 (both SunPro 6 and gcc 2.95).
- kill temp.files links for local posts, reported by Robert Marshall.
- signal handling fixes.
- fixed the timeout-goes-unnoticed bug, thanks to Richard van der Hoff.
- tries to fix the infamous "unsigned -1" corruption in groupinfo.
- build toolchain updated to automake 1.7.1/autoconf 2.54
- forward-port of only_groups_pcre option from leafnode-1.
- articles that are mailed to the moderator that don't already have a To:
  header line now get the To: header appended.
- no longer installs the "lsort" program. You can remove it from
  /usr/local/sbin/lsort
- fetchnews now logs how many articles could be filtered from pseudo
  headers generated from XOVER data already. Look for "group.name: XOVER
  N to get, M filtered" lines.
- the filterfile and applyfilter manual pages have been updated
- Add: Rnews is back!
- There is a new "only_fetch_once" option, that reads a group only from
  the first server queried that carries this group. Suggested by Jörg
  Mensmann.
- Only change permissions/owner of leafnode directories when creating
  them. Requested by Kevin Bulgrien.
- delaybody is back!  (Ralf Wildenhues)
  delaybody mode can now be enabled for all or selected groups only,
  specified by wildcard patterns with the "groupdelaybody" option.
- fetchnews revamped (Ralf Wildenhues)
  It is now possible to query all or some newsgroups only, fetch several
  articles by Message-ID and fine-tune fetching of headers and bodies
  of delaybody groups as well as articles in regular groups.
- fetchnews and rnews no longer use a two-stage approach -- the
  .overview files are updated as articles are stored, this should profit
  from caches.

2.0b8_ma10pre3.3:
- fix: texpire crashes (Ralf Wildenhues)
- fix: garbage from host name resolver (Raymond Scholz)
- fix: off-by-one error in FQDN validator (Matthias Andree)
- feature: "no_direct_spool=1": can now post in leafnode-1.9 style: only
  show locally posted articles after they have been fetched from the
  upstream. (Matthias Andree)
- feature: newsq prints now Date: and Message-ID: (Matthias Andree)
- docs: NEWS file (Matthias Andree)
- build: enable gcc warnings (Ralf Wildenhues)
- internal: getfoldedline does not try to read the continuation of a
  line that starts with a dot. (Matthias Andree)
