"Fossies" - the Fresh Open Source Software Archive

Member "leafnode-1.12.0/OLDNEWS" (30 Jan 2009, 54677 Bytes) of package /linux/misc/leafnode-1.12.0.tar.xz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "OLDNEWS": 1.11.12_vs_1.12.0.

    1 * 1.9.54, 2004-05-20
    2 
    3 ### INCOMPATIBLE CHANGE
    4 - Consistency: The lockfile timeout for checkgroups has changed to five
    5   seconds, checkgroups used to wait indefinitely.
    6   See timeout_lock and LN_LOCK_TIMEOUT below for a migration path.
    7 
    8 ### BUGFIXES
    9 - Bugfix: fetchnews and texpire would delete a lockfile held by another
   10   process when there were problems reading the configuration file.
   11 - Bugfix: when groupexpire settings were used, their memory was leaked at
   12   program exit.
   13 - Robustness: texpire is a lot more careful about mids files. Johannes Berg
   14   reported aborts related to corrupt mids files. mids files are removed at
   15   start of any leafnode program.
   16 - Documentation: Some minor formatting problems in the manual pages were
   17   corrected. Reported by Laurent Fousse.
   18 
   19 ### CHANGES
   20 - Logging: the number of duplicates that texpire has deleted is now printed.
   21 - Feature: The maximum time that programs wait for a lock file can now be
   22   configured through "timeout_lock" in the configuration file and overridden
   23   by the LN_LOCK_TIMEOUT environment variable, to simplify running fetchnews
   24   and texpire from a cron job. A workaround was suggested by Dirk-Lüder Kreie.
   25 - Feature: texpire has a new "-r" (repair) option that checks harder whether
   26   the hard links are correct.
   27 - Documentation: INSTALL reminds the user to erase the distributor package
   28   first before doing a source install.
   29 
   30 ==============================================================================
   31 * 1.9.53, 2004-05-05
   32 
   33 ### BUGFIXES
   34 - Bugfix: do not re-authenticate if server requires authentication for the
   35   same command twice - to avoid an unterminated re-authentication loop.
   36 - Bugfix: Various error conditions now cause the problem to be logged.
   37 - Bugfix: Newly-added groups that are not in a server no longer cause
   38   fetchnews to proceed to the next server.
   39 - Bugfix: texpire did not repair the spool in archived groups
   40   (groupexpire some.news.group = -1) which caused duplicates and articles
   41   inaccessible by Message-ID after corruption. Reported by Dirk-Lüder Kreie.
   42 - Portability: One string was split for C89 conformance (string constants
   43   cannot exceed 509 characters).
   44 
   45 ### CHANGES
   46 - Feature: fetchnews supports an environment variable, LN_SKIP_GROUPS, that is
   47   treated as a comma-separated list of wildmats, any match sufficient. All
   48   matching groups are skipped, so you can skip your binary groups during
   49   daytime, for instance. Don Geddis had complained a configuration cheat he'd
   50   been using had stopped working with one of the recent fixes. Let there be an
   51   official way to do things instead.
   52 - Feature: The time zone is back in leafnode-generated Date: headers, provided
   53   that the operating system provides a tm_gmtoff member in struct tm (BSD,
   54   GNU). Systems that don't offer this use GMT and report the time zone as
   55   -0000.
   56 - Feature: The environment variable LN_DEBUG is now read as an integer. The
   57   debug level is the greater of debugmode in the config file and the contents
   58   of LN_DEBUG.
   59 - Compatibility: support forgetful servers that require re-authentication
   60   often. Reported by Andrew Cranson.
   61 - Consistency: the try_lock() debug message now goes to stdout, and only in
   62   verbose mode. It used to be printed on stderr, unlike most of the other
   63   debug messages. Reported by Kieron Dunbar.
   64 - Consistency: "skipped group.name, not in only_groups_pcre" message is now
   65   prefixed with the server name.
   66 - Documentation: If the volunteered authentication early in a connection
   67   fails, add a log that this condition may have been caused by premature
   68   authentication.
   69   NOTE: authentication implementations differ a lot.
   70 - Documentation: The server= examples in config.example were revised and are
   71   now G-rated and end in domains that are guaranteed to not exist.
   72 
   73 ==============================================================================
   74 * 1.9.52, 2004-04-03
   75 
   76 Note: this file contains names that have been transliterated to ISO-8859-1.
   77 To see the names in their original spelling, view the CREDITS file.
   78 
   79 If /your/ name is shown in CREDITS only in the transliterated spelling, feel
   80 free to send a correction in UTF-8 character set.
   81 
   82 ### SUMMARY OF IMPORTANT CHANGES
   83 (these are detailed below)
   84 - Texpire is now robust against hard link attacks that try to prevent expiry.
   85 - Fetchnews has more complete timeout handling and a new timeout_fetchnews
   86   global configuration option.
   87 - Low-traffic, subscribed groups will not expire any more.
   88 - Time zone handling was rewritten from scratch once again and dropped in all
   89   places where it isn't essential, to fix complaints and bogus data.
   90 - A bug that cause excessive article considerations after a fetch had to be
   91   aborted fixed was fixed.
   92 - only_groups_pcre fixes for crosspostings, adds a new option
   93   only_groups_match_all.
   94 - A bug that caused active persistent re-downloads for upstreams running on a
   95   non-standard server was fixed. The NEWGROUPS range now only spans the time
   96   since the last fetchnews run.
   97 - Bugfixes were made to connecting to upstream servers with multiple IPs.
   98 - Quickmkdir is no longer part of the installation procedure. Leafnode
   99   programs will create missing directories on their own.
  100 - The user account leafnode processes run under is now configurable at compile
  101   time, to aid OpenBSD packaging.
  102 
  103 ### INCOMPATIBLE BUGFIXES AND CHANGES
  104 - Bugfix: "GROUP s" will now mark the group interesting iff it is interesting.
  105   This avoids premature unsubscription from low-traffic groups.
  106   Backported from leafnode-2. Reported by Oliver Brakmann.
  107 - Cleanup: Logging has been overhauled. It is now more consistent, prefixes
  108   are the server or group name where applicable, prefixes error: for errors
  109   and warning: for warnings.  Timeout and other line reading problems now
  110   appear in the debug log with "ERROR:" on the line for easy retrieval with
  111   grep, the end of file is also logged as "< (EOF)". The "skipping (filename),
  112   not complete" message was demoted from LOG_NOTICE to LOG_INFO severity
  113   level.
  114 - Change: fetchnews now uses timeout_fetchnews rather than timeout_client when
  115   waiting for a server's NNTP status response.
  116   (this includes a documentation fix provided by David Houlden)
  117 - Cleanup: Time zone information for generated headers was unreliable and has
  118   been dropped. We'll create the Date: header in GMT.
  119 
  120 ### BUGFIXES
  121 - Bugfix: checkgroups can now read the checkgroups file from a path relative
  122   to the current working directory.
  123 - Bugfix: fetchnews will wait no more than five minutes (configurable through
  124   the new timeout_fetchnews parameter) for a server response that is not a
  125   NNTP status.
  126 - Bugfix: fetchnews will not kill the group's high watermarks when it has to
  127   abort the fetch. It will leave a snapshot file behind that is merged on the
  128   next run for the server that failed.
  129   The bug was introduced into 1.9.50 and discovered by Bastian Blank.
  130 - Bugfix: "server does not carry Newsgroups:" log message only printed the
  131   first group name rather than all.
  132 - Bugfix: when posting, the first newsgroup in a Newsgroups:-header of a
  133   cross-posted article that was NOT matched by only_groups_pcre stopped the
  134   search for further articles that might still be on the server.
  135   Reported by Joshua Crawford.
  136 - Bugfix: log exact reason why a fetchnews connection has failed.
  137 - Bugfix: try all IPs of a host even when the connection one of them failed.
  138 - Bugfix: send MODE READER first, then try to authenticate.
  139 - Bugfix: add missing error messages for NNTP connection and DATE reply
  140   handling.
  141 - Bugfix: Proceed to next IP when a server name has multiple IPs attached when
  142   the greeting doesn't arrive or the upstream runs NNTPcache V2.3.
  143 - Bugfix: Do not fetch the full newsgroup list on every fetchnews run when the
  144   upstream runs on a non-standard port. Reported by Cory C. Albrecht and
  145   confirmed by Joshua Crawford. This is a fix-up for a half-baked bugfix that
  146   went into leafnode 1.9.29 that was supposed to support multiple servers with
  147   the same name but different port (necessary for ssh tunnels for instance).
  148 - Bugfix: Plugged a memory leak, the memory allocated for a only_group_pcre
  149   compiled PCRE was never freed.
  150 - Bugfix: "illegal" articles are truncated to zero size and no longer given
  151   out, to avoid sending dangerous content to clients.
  152 - Bugfix: Zero-size check was not applied when an article was opened by
  153   Message-ID.
  154 - Bugfix: texpire relied on the hard link count to expire articles. Any user
  155   could defeat expiry by creating a hard link to an article file, preventing
  156   expiry of certain articles, so that the spool partition could fill up in the
  157   long run. However, the user who can perform this attack can usually fill up
  158   the disk directly (without instrumenting leafnode), so no security
  159   announcement shall be issued. Code has been added to force expiry via the
  160   Message-ID, rather than by hard link count.
  161 - Bugfix: the date check stopped working when DST was in effect.
  162   Replaced by timegm() function from Heimdal/Kerberos IV, calculations are now
  163   done in GMT rather than fiddling with the GMT offset.
  164   Caused lots of bogus "check your system clock" warnings.
  165 - Bugfix: Do not fetch newgroups since last full active fetch, but rather
  166   since last NEWGROUPS.
  167 - Bugfix: leafnode: do not send warnings (for instance about misconfiguration,
  168   when maxage is too large) to stderr, some super servers send them to the
  169   client. Reported by Martin Klaiber.
  170 - Cleanup: Some internal variables have been renamed to avoid name clashes
  171   with library functions (Ralf Wildenhues).
  172 - Cleanup: getline.c now includes string.h to avoid compiler warnings
  173   (Ralf Wildenhues).
  174 - Cleanup: After connection failure, the connection is properly shutdown with
  175   nntpdisconnect() or nntpquit() rather than a half-baked shutdown(2).
  176 - Portability: quickmkdir will not start the file name with a double slash.
  177   Patch sent by A. Alper Atici.
  178 
  179 ### CHANGES
  180 - Feature: The fetchnews server respone timeout is now independent of nntpd's
  181   client timeout.
  182 - Feature: New server option only_groups_match_all to make only_groups_pcre
  183   more restrictive with respect to posting, with this option on, ALL groups of
  184   a crossposting must match the PCRE rather than ANY before a post goes to the
  185   server that defines this option.
  186 - Feature: fetchnews supports a new -w option to force the XOVER updater
  187   process to run in the foreground rather than detached.
  188 - Portability: The user and group name that used to be hardcoded to "news" are
  189   now configurable, to support the OpenBSD policy of prefixing daemon and
  190   system users with an underscore character, "_". Use --with-user and
  191   --with-group options to ./configure.
  192   Based on patches by Cory C. Albrecht.
  193 - Documentation: README now explains the difference between news.debug and
  194   news.=debug in syslog.conf and recommends the former.
  195 - Safety: multiple configurations for the same server and port now cause an
  196   abort. Leafnode cannot handle fetching for multiple users per single server.
  197 - Consistency: debugmode >= 1 now logs sent NNTP commands. (debugmode = 2 was
  198   needed before for sent commands and = 1 for received replies)
  199 - Consistency: all leafnode processes will now generate needed directories
  200   on start-up. This effectively eliminates the need for quickmkdir, which
  201   will continue to be built in order not to break existing packaging scripts.
  202   Also helps Cygwin portability (which requires further patches that do not
  203   ship with leafnode and are currently maintained by A. Alper Atici).
  204 - Feature: debugmode >= 2 now logs - at LOG_DEBUG priority - decisions why an
  205   article is posted or skipped for a particular server in the light of
  206   only_groups* options.
  207 - Efficiency: the migrate() function caused a lot of unnecessary chdir()
  208   calls.
  209 - Cleanup: The signal causing fetchnews to abort will now be logged.
  210 - Cleanup: suppress 'found no server with posting permission' in fetchnews
  211   when one or more servers have not been queried, suggested by Al Bogner.
  212 - Cleanup: when any server has not been queried by fetchnews, print a warning
  213   (unless -q is given) and log it.
  214 - Cleanup: suppress 'backing up from 1 to 12345' style messages in fetchnews.
  215 - Cleanup: texpire will now fix the group low water marks for pseudo groups,
  216   so that LIST ACTIVE output matches GROUP output.
  217 - Cleanup: config.example: The expire line is first, before the server line.
  218 
  219 ==============================================================================
  220 * 1.9.51, 2004-02-20
  221 
  222 ### BUGFIX
  223 - fetchnews did not properly detect an existing groupinfo file in all
  224   circumstances. This bug was introduced as a side effect of a fix that went
  225   into release candidate #3 of 1.9.50 on February 10th but wasn't found during
  226   release candidate testing -- it didn't show on the author's computers.
  227   Fixes SourceForge bug #900583.
  228 
  229   This bug was first reported by Thomas Zajic, then with a full analysis
  230   and patch by Adam Sampson. Thanks to both of them.
  231 
  232 ==============================================================================
  233 * 1.9.50, 2004-02-19
  234 
  235 ### EXECUTIVE SUMMARY
  236 - Major texpire bugfixes, it repairs a lot more spool problems, including
  237   a move or copy that broke hard links; texpire now updates overview data,
  238   to recover from a fetchnews crash.
  239 - "noactive" option now works for the first time.
  240 - Checkgroups now adds groups as it should have always done. Useful in context
  241   with "noactive" to prime the news group list.
  242 
  243 ### INCOMPATIBLE BUGFIXES AND CHANGES
  244 - Bugfix: most programs now generate an active from the spool contents when
  245   they cannot read the groupinfo, to avoid bogus first/last counter resets.
  246 - Bugfix: checknews adds groups listed in the checkgroups file that aren't
  247   already in the groupinfo. Prints them on stderr with " NEW" next to them.
  248 - Cleanup: made fetchnews logging and console printing more consistent to aid
  249   debugging. Careful changes to some severities.
  250 - Conformance: texpire -h now exits 0 (it used to exit with code 1).
  251 
  252 ### BUGFIXES
  253 - Bugfix: "noactive" has never (since its introduction into 1.9.25) worked as
  254   documented and still fetched the active file when "forceactive" was set
  255   (through -f or expiry of timeout_active). Align actual behaviour with the
  256   documentation. Reported by Andrew Cranson.
  257 - Bugfix: texpire can now relink (after file system damage) crossposted
  258   articles properly.
  259 - Bugfix: texpire can now move files into the right message.id/XXX directory
  260   if they are in the wrong one, so nntpd can find them.
  261 - Bugfix: texpire now logs errors in addition to printing them.
  262 - Bugfix: Some format strings for integers in fetchnews.  Harmless on 32-bit
  263   platforms but can cause crashes or bogus output/logging on 64-bit machines.
  264 - Bugfix: Plug a memory leak in checkgroups.
  265 - Bugfix: The pseudo article for an empty group now has a higher number than
  266   the last article of the group previously had, so it is actually visible in
  267   news readers. Reported by Andreas Muck.
  268   Cosmetic side effect: articles in new groups now start at number 3 rather
  269   than 2 in many configurations. This is harmless.
  270 - Bugfix: when building an active file from the news spool, use the
  271   directory's ctime as the creation date.
  272 - Bugfix: whenever an active file is built from the news spool, this will
  273   force fetchnews to download the active files completely at the next run.
  274 - Cleanup: Fetchnews quickly proceeds to the next server when serious trouble
  275   is encountered during group fetch, that is, premature server disconnect or
  276   missing credentials or authentication failure.
  277 - Cleanup: Print NNTP-connect related errors on console as well (not only to
  278   syslog).
  279 - Robustness: overview (NOV, XOVER) is now more tolerant with respect to
  280   leading whitespace, including HTAB characters.
  281 - Robustness: texpire handles Ctrl-C and "kill -TERM" more gracefully.
  282 
  283 ### PORTABILITY IMPROVEMENTS
  284 - Portability: PATH_MAX is almost gone, a POSIX system need not define it. If
  285   it is missing, we assume 4096. PATH_MAX is not used to size static array,
  286   but only gives the initial array size for dynamically sized strings that
  287   extend automatically when the size is insufficient.
  288   This should help the GNU Hurd vaporware should it ever materialize.
  289 - Portability: Skip autoconf's SETVBUF_REVERSED check on Intel C++.
  290 - If the compiler is an Intel one, ./configure refrains from adding GCC
  291   options.
  292 
  293 ### CHANGES
  294 - Documentation: README-FQDN* was updated now that news.cis.dfn.de and
  295   news.individual.net have been separated.
  296 - Documentation: Updates to texpire, leafnode, fetchnews manual pages.
  297 - Cleanup: update.sh (run by make update, to update spools written by leafnode
  298   1.6 and older) will now remind the user he has to delete groupinfo.old.
  299 - Texpire: now updates .overview information should a previous fetchnews run
  300   have been interrupted hard.
  301 - Texpire: support -q to suppress all non-error output.
  302 - Cosmetic: texpire no longer counts unlink failures as kept articles.
  303 
  304 ==============================================================================
  305 * 1.9.49, 2004-01-09
  306 
  307 ### REGRESSION BUGFIX
  308 - Fetchnews: the 1.9.48 security bugfix broke delaybody mode, it is now fixed.
  309   Bug reported by Berthold Höllmann.
  310 
  311 ==============================================================================
  312 * 1.9.48, 2004-01-09
  313 
  314 ### SECURITY BUGFIX
  315 - Fetchnews: when a. minlines=0 (default) and b. delaybody=0 (default) and
  316   either c. no filterfile is configured (default) or a. and b. and d.
  317   article_despite_filter=1 are configured, an article with missing mandatory
  318   headers and without body can hang fetchnews and/or prevent the fetch of
  319   further articles from the current group or server. CVE Name: CVE-2004-2068
  320   Reported by Toni Viemerö, SourceForge bug 873149.
  321   This was a denial-of-service bug, not one that could lead to local or remote
  322   privilege escalation.
  323 
  324 ### BUGFIX
  325 - Fetchnews: log group name when articles are skipped that match the minlines,
  326   maxlines, maxbytes or age filters, for more consistent logging.
  327 
  328 ### CHANGES
  329 - Rebuilt with autoconf 2.59.
  330 
  331 ==============================================================================
  332 * 1.9.47, 2004-01-07
  333 
  334 ### BUGFIXES
  335 Note: many of these bugs have been long-standing.
  336 - Fetchnews: Protocol conformance: no longer ignores lines when the XOVER data
  337   obtained from the upstream server lacks the 8th field, Xref:. RFC-2980
  338   suggests, but does not mandate this field. Reported by Brian Sammon.
  339 - Fetchnews: XOVER mode did not take maxlines, minlines and maxbytes into
  340   account.
  341 - Fetchnews: XHDR mode did not take minlines and maxlines into account.
  342 - Fetchnews: XHDR mode tried to fetch bogus articles when articles had been
  343   dropped from the fetchlist because of age or size.
  344 - Fetchnews: XHDR required that Bytes, Date and Lines had been returned in
  345   exactly the same order as the Message-ID headers and would go out of synch
  346   if it didn't - but in doubt, would fetch the article. Fixed.
  347 - Leafnode: will detect "list active.times" when trailing garbage (a group
  348   name) is present. It used to read it as "list active" instead.
  349 - Leafnode: XOVER now works without article number and returns data for
  350   current article.
  351 - Do not pass uninitialized data to setrlimit() when setting the core file
  352   size in debugmode.
  353 - Plugged a minor memory leak.
  354 - Avoid crashes in XOVER related functions when the OS cannot determine the
  355   current working directory.
  356 - Avoid crashes or data corruption in out-of-memory conditions, replacing
  357   strdup by critstrdup.
  358 - Use $(SHELL) to run ./update.sh when "make update" is typed.
  359 
  360 ### CHANGES
  361 - fetchnews now supports a new -q option that suppresses the "found no server
  362   with posting permission" warning, to avoid the "cron sends lots of mail"
  363   bug. Reported by Joey Hess of Debian.
  364 - fetchnews now supports a server-specific "noxover" option to force the
  365   use of XHDR when a server does not work with XOVER.
  366 - fetchnews will now try to match the "maxcrosspost" parameter against the
  367   Xref: overview information that, albeit optional, is returned by most
  368   servers in response to the XOVER command. This can avoid the download of
  369   some, but not all, excessively crossposted articles.
  370 - The news administrator address, as shown in the placeholder article, is now
  371   configurable via the new "newsadmin" option. It used to be hardcoded to
  372   "news@HOSTNAME", where HOSTNAME was replaced by leafnode's hostname.
  373 - Rebuilt with automake 1.8.
  374 
  375 ### DOCUMENTATION
  376 - The "port" option description in config.example and leafnode.8 has been
  377   revised to make clear that it only applies to fetchnews, not the listening
  378   port.
  379 
  380 ==============================================================================
  381 * 1.9.46, 2003-11-06
  382 
  383 ### BUGFIXES
  384 - fix fetchnews -n regression, broken since 1.9.44.rc1. (-n was ignored)
  385 - match (and properly translate) section headers in German manual pages.
  386 
  387 ### CHANGES
  388 - report when active must be refetched and why.
  389 
  390 ### WORKAROUNDS
  391 - ntl changed the banner of their still-broken NNTP software. Apply STAT
  392   workaround also to the new banner. Reported by Grahame Cooper.
  393 
  394 ==============================================================================
  395 * 1.9.45, 2003-10-30
  396 
  397 ### BUGFIXES
  398 - A fetchnews out-of-synch conditions was fixed, reported by Jan Knutar:
  399   fetchnews cannot handle bogus group names that start with a dot.
  400 - Fetchnews ignores newsgroups that have NULL components (start or end in a
  401   dot or have ..), since such newsgroups cannot be handled by leafnode. Such
  402   newsgroups do not exist on well-maintained servers or in well-administered
  403   hierarchies. Reported by Jan Knutar.
  404 
  405 ==============================================================================
  406 * 1.9.44, 2003-10-22
  407 
  408 ### BUGFIXES
  409 - A texpire SIGSEGV was fixed, it struck when expiring articles from groups
  410   that were no longer in interesting.groups. (Reported by Iain D. Broadfoot.)
  411 - Interesting.groups expiry was bugfixed and streamlined, it now happens
  412   before contacting the first server. (Reported by Nikita V. Youshchenko).
  413 - Debugmode is now documented in config.example.
  414 - Debugmode has been cleaned up in fetchnews. It is now possible to log
  415   XOVER replies with debugmode=3.
  416 - One meaningless system error that was included on "illegal article:" log
  417   lines was removed from the line. (Reported by Nikita V. Youshchenko.)
  418 - Fetchnews no longer moves articles into failed.posting if the upstream
  419   server refuses the POST command (before seeing the article).
  420 - The XOVER updater no longer aborts when encountering a group when there is
  421   a sub-group with an all-numeric name. (This only happens in badly
  422   administered newsgroup hierarchies.) Reported by Dâniel Fraga.
  423 - The RPM is now more careful when handling /etc/xinetd.d/leafnode and
  424   /etc/cron.daily.leafnode, both are marked %config(noreplace) now. Reported
  425   by William Hooper.
  426 
  427 ### PORTABILITY
  428 - __attribute__ is only used with __GNUC__ (gcc), to avoid compiler trouble.
  429 
  430 ### CHANGES
  431 - Fetchnews now accepts any 2XX reply to NEWGROUPS, to work around a problem
  432   with an MC-link news server. (Reported by Paolo Amoroso.)
  433 - Texpire, when in verbose mode,  will now print "Expiring message.id..."
  434   before doing just that.
  435 - The RPM installation was revised (the German manual pages are now in
  436   %_mandir/de/, cruft from doc_german was dropped, xinetd example is
  437   installed).
  438 - Leafnode excludes glibc-2.3 special ctype.h stuff to let binary compiles
  439   work on glibc-2.2.
  440 - Fetchnews has MUCH improved posting behaviour and is more verbose in case of
  441   trouble.
  442 - Fetchnews speed-up in XOVER mode: avoid stat() if the article is ignored for
  443   size or age. Reduces local I/O, particularly with -x, when recovering from
  444   crashes or after adding new servers.
  445 - function inlining is now checked for in ./configure, attributes.h is gone.
  446 
  447 ### DOCUMENTATION
  448 - There is now a new documentation file, ADD-ONS, that currently lists leafwa
  449   and Nikita V. Youshchenko's "mlgroups" patch.
  450 - A German manual page for leafnode-version(1) has been added.
  451 
  452 ==============================================================================
  453 * 1.9.43, 2003-09-04
  454 
  455 ### INCOMPATIBLE CHANGE
  456 - In the traditional spool, newsgroups with all-numeric components show up
  457   with a - (minus, hyphen) prefixed to the number, the newsgroup example.1234
  458   will be stored as /var/spool/news/example/-1234.
  459 
  460   It is believed this change does not cause troubles because news systems that
  461   offered the traditional spool have been incapable of providing news access,
  462   and because the count of news groups with such names is way below 0.1% on
  463   the news servers I have access to. The gain in functionality justifies the
  464   incompatibility.
  465 
  466   NOTE: this only affects newsreaders that directly access the spool.
  467   NNTP-based newsreaders will see no difference.
  468 
  469 ### BUGFIXES
  470 - Fix leafnode.8 manual pages (EN and DE languages) to explain 0 and negative
  471   values for expire/groupexpire.
  472 - Avoid premature abort (that causes .overview and groupinfo files to become
  473   stale) when the stdout becomes disconnected. Reported by Sytse van Slooten.
  474 - Make sure that texpire fixes the groupinfo lines of groups in "archive mode"
  475   (groupexpire -1). Reported by Sytse van Slooten.
  476 - Repair groupexpire 0 (= use global default, rather than expire immediately).
  477   Broken since 1.9.23.
  478 - Make sure that fetchnews complains when a timeout happens while reading
  479   newsgroups lists ("active file") or newsgroup descriptions. Found after a
  480   related report from Tim Daneliuk.
  481 - Use different fix for newsgroup names with all-numeric components that does
  482   not require two stat() calls in XOVER handling. Tracked down and reported by
  483   Rein Klazes.
  484 - Remove bogus error messages "article * is below/above the *-water mark" that
  485   occur when reading a group that fetchnews is fetching into. Reported by Rein
  486   Klazes.
  487 - Make sure XOVER related error messages don't show up in the NNTP client.
  488 
  489 ### CHANGES
  490 - fetchnews puts stdout into line buffered, or -- failing that -- unbuffered
  491   mode (Patch by Mark Brown, Debian maintainer).
  492 - leafnode processes warn (syslog and stderr) when a groupexpire is set to 0
  493   (which means "use the default", which some users may not be aware of).
  494 
  495 ### DOCUMENTATION
  496 - Added FAQ item on running leafnode as nntps server.
  497 - Mention SuSEconfig difficulties with /etc/hosts in README-FQDN*
  498 - Clarify item #13 in INSTALL.
  499 
  500 ==============================================================================
  501 * 1.9.42, 2003-06-27
  502 
  503 ### SECURITY RELEVANT BUGFIXES
  504 - Fix hang when trying to download an article that lacked mandatory headers.
  505   (Very old bug, recently found by Joshua Crawford) CVE Name: CVE-2003-0744
  506 NOTE: this assertion that the bug is security relevant (denial of service)
  507 has been made after 1.9.42 release.
  508 
  509 ### BUGFIXES
  510 - Check lastreply() against NULL, in an effort to fix obscure sporadic and
  511   non-reproducable crashes on OpenBSD sparc64. (Reported by Bruno Rohee)
  512 - Fix bogus "Cannot open .../interesting.group/group.name for reading" when a
  513   group subscription has expired. (Reported by Andreas Muck)
  514 
  515 ### CHANGES
  516 - The ChangeLog file has been split, older parts (leafnode 1.9.31.rel and
  517   before) have moved to the "new" ChangeLog.old file.
  518 
  519 ==============================================================================
  520 * 1.9.41, 2003-05-22
  521 
  522 ### BUGFIXES
  523 - Fix the "leafnode keeps fetching a group I've unsubscribed from long ago"
  524   bug that haunted leafnode since 1.9.18 at the latest and that was more
  525   prominent with the delaybody migration fixes of 1.9.33. Reported by Andreas
  526   Muck and Gerry Doris.
  527 - "make clean" no longer erases t.pcre_extract
  528 
  529 ### CHANGES
  530 - Add an EXPERIMENTAL feature, delaybody_in_situ. This may work around
  531   problems with particular newsreaders in delaybody mode. Do not rely on this
  532   feature for now, and do send feedback if you use it, regardless of whether
  533   it works or not. Defaults to off (compatible with previous versions). If you
  534   don't know what it is about, leave it off.
  535 - Some messages in fetchnews have been reworded to make them clearer and more
  536   helpful.
  537 
  538 ### PORTABIILTY
  539 - Find tcpd on OpenBSD at build time. Patch by Bruno Rohee.
  540 
  541 ==============================================================================
  542 * 1.9.40, 2003-05-08
  543 
  544 ### BUGFIX
  545 - Leafnode no longer aborts when using the replacement snprintf function
  546   (FreeBSD) and is about to display a pseudo article.
  547 
  548 ==============================================================================
  549 * 1.9.39, 2003-05-04
  550 
  551 ### CRITICAL BUGFIX (DATA LOSS IN LEAFNODE-TO-LEAFNODE CONVERSATION)
  552 - Leafnode returned bogus "OK" replies to "STAT <mess@ge.id>" requests when
  553   the currently selected group was a pseudogroup.
  554   This caused data loss when two leafnode versions are cascaded, because the
  555   downstream thinks the upstream already has the article and discards it.
  556   Reported to Debian by Kyler Laird, forwarded by Mark Brown.
  557 
  558 ==============================================================================
  559 * 1.9.38, 2003-04-23
  560 
  561 ### BUGFIX
  562 - The replacement snprintf trampled hash marks over digits in the output when
  563   the output length matched the minimum field width or exceeded it, in
  564   violation of Single Unix Specification. Fixed now. (Corresponding
  565   conformance testing code has been added to "make check".)
  566 
  567 ### CHANGES
  568 - The RPM spec file checks if pcre.h is in /usr/include/pcre or /usr/include.
  569   This hopefully addresses RedHat 9 RPM build failures. (The leafnode RPM
  570   should rely on the pcre RPM rather than including its own copy of PCRE
  571   files, to avoid conflicts.) This is untested because the snprintf bugfix
  572   above is critical and does not allow for further delay for testing.
  573 - The NewsCache compatibility code was changed to allow the DATE command
  574   for NewsCache 0.99.22* and 0.99.2? as well as 1.1.12 and newer.
  575 
  576 ==============================================================================
  577 * 1.9.37, 2003-04-19
  578 
  579 ### BUGFIX
  580 - Fetchnews properly tracks when reading the active file from a server fails
  581   and retries and the next run.
  582 - The replacement snprintf has received numerous bugfixes.
  583 - Leafnode now checks if the system's snprintf function really works at build
  584   time and substitutes its own snprintf.c if the system's snprintf function is
  585   broken (or missing).
  586 - Don't use format modifiers that are unsupported by the shipped snprintf.c.
  587 - Build fixes on platforms that need special LDFLAGS (sparc64 for
  588   example), particularly when no system PCRE library is available.
  589 
  590 ### PORTABILITY
  591 - Better portability to systems that do not provide DIR and struct in the
  592   <dirent.h> header file.
  593 
  594 ### WORKAROUND
  595 - Fetchnews no longer checks the DATE at upstream "NewsCache" servers other
  596   than version 0.99.22p1, they return local time rather than GMT.
  597 
  598 ### INCOMPATIBLE CHANGES
  599 - Leafnode programs now REQUIRE that they can read the spooldir (and not only
  600   execute it). As the spooldir has always been readable, the impact of this
  601   change is negligible.
  602 - The default lockfile location has changed to $spooldir/leaf.node/lock.file.
  603   This is meant to prevent packaging errors, as the lock file must be in a
  604   directory writable by the "news" user. --with-lockfile can be used to
  605   configure the former lock file location which used to be
  606   /var/lock/news/fetchnews.lck.
  607 - Leafnode programs now enforce a umask of 02, just to be sure. Should have no
  608   visible impact.
  609 
  610 ### CHANGES
  611 - There is now a "post_anygroup" option to skip the "is the group I post into
  612   on this server" check. Useful on servers that let you post but not read.
  613 - Fetchnews now prints an error message when saving the current working
  614   directory fails when it tries to post articles.
  615 - Fetchnews now prints the reply from the upstream server when reading the
  616   newsgroup list (all or new) fails.
  617 - The internal directory creation code has been revised.
  618 - Debugging code (assertions) has been removed from the build.
  619 
  620 ==============================================================================
  621 * 1.9.36, 2003-02-25
  622 
  623 ### BUGFIX
  624 - Fetchnews properly ignores the body of an article when it has killed an
  625   article after sending the "ARTICLE" command rather than "HEAD". Regression
  626   in leafnode-1.9.33, found by Oliver Schwabedissen.
  627 
  628 ### DOCUMENTATION
  629 - Minor fix to texpire(8) (English version) by Bruno Rohee.
  630 
  631 ==============================================================================
  632 * 1.9.35, 2003-02-21
  633 
  634 ### BUGFIX
  635 - Leafnode no longer aborts if an article with Message-ID header is posted.
  636   This fixes a regression introduced in leafnode-1.9.34.
  637 
  638 ==============================================================================
  639 * 1.9.34, 2003-02-19
  640 
  641 ### BUGFIXES
  642 - Don't pass time_t to %ld formatting. (reported by Christian Weisgerber)
  643 - Check time difference for overflow when using DATE.
  644 - Change to spooldir at start-up, to avoid barfing when leafnode is started
  645   from a working directory that the "news" user has no access to, to address
  646   fetchnews -P issues when started from cron.
  647 
  648 ### DOCUMENTATION
  649 - Minor changes to manual pages and README.
  650 
  651 ================================================================================
  652 * 1.9.33, 2003-02-03
  653 
  654 ### BUGFIXES
  655 - Fix client hang when an article had suffered corruption and its Message-ID
  656   could not be retrieved. Also consider the article broken and unlink it.
  657 - Compatibility: leafnode 1.9.23 to 1.9.32 have used the u+x flag in out.going
  658   to mark an article "complete". This was incompatible with versions 1.9.22
  659   and before. It has been changed to u+r, which improves compatibility, posts
  660   are no longer stuck in out.going, and even older versions won't read
  661   incomplete posts.
  662 - Switching delaybody off no longer makes bodies of article headers retrieved
  663   before the switch inaccessible. (affects leafnode, fetchnews)
  664 - Pseudo article display was fixed for newsgroups that were once there but
  665   that have expired without their article pointers reset in the groupinfo file.
  666 - Fix local article number extraction again, along the lines suggested by
  667   Fumiaki Miura. This bug marked the wrong article for download if a header
  668   of the structure "Xref: my.ser.ver abcabc:20 abc:10" was in the article.
  669 - Ralf Wildenhues fixed two subtle bugs in signal handling again, making sure
  670   we don't warp backwards in the program flow when ^C is pressed twice.
  671 - The nodesc flag was not in effect for fetchnews -f or after adding a new
  672   server, making fetchnews redownload the FULL active file over and over again.
  673 - Downloaded articles don't show up in out.going in multi-server setups any
  674   more, they did when articles to post were in out.going because fetchnews
  675   messed up its directories.
  676 
  677 ### CHANGES: documentation
  678 - Options added since 1.9.20 now appear with the leafnode version when the
  679   option was introduced in the manual pages.
  680 
  681 ### CHANGES: fetchnews
  682 - Leafnode will now use the "ARTICLE" command to download articles if no
  683   filterfile is defined or if the new "article_despite_filter" option is set
  684   and "delaybody" is off. This speeds up article download, particularly on
  685   high-latency links such as interleaved DSL or satellite links.
  686 - There is a new global option, "article_despite_filter", defaults to 0 for
  687   compatibility.
  688 - There is a new per-server option, "noread", which defaults to 0 and is
  689   therefore compatible with previous releases of leafnode.
  690   If set, the server is not queried for active files or articles (but
  691   skipped), but posting to this server is still tried. Useful to  complement
  692   "nopost".  Courtesy of Dmitry Samersoff <dsamersoff@assist.ru>.
  693 - Fetchnews compares the local clock to that of the upstream server it's
  694   talking to if the upstream supports the "DATE" command, and warns if both
  695   clocks are more than 10 minutes apart (but the program will continue for
  696   compatibility.)
  697 
  698 ### CHANGES: leafnode
  699 - The DATE command is now supported.
  700 
  701 ================================================================================
  702 * 1.9.32, 2003-01-08
  703 
  704 ### BUGFIXES
  705 - Fix packaging error: leafnode.cron.daily wasn't regenerated properly.
  706 - Detect maxage overflow when reading the configuration and clamp to
  707   the maximum allowed value.
  708 - Solaris portability fixes, Solaris cannot remove a directory (not even by
  709   name) when it's the current working directory. Linux or BSD are fine.
  710   Include sys/time.h and time.h before netinet/in.h.
  711 - Detect and log errors when removing empty directories in texpire or when
  712   reading overview data.
  713 
  714 ### CHANGES
  715 - fetchnews logs the child process ID
  716 ================================================================================
  717 * 1.9.31, 2002-12-29
  718 
  719 ### BUGFIXES
  720 - On non-BSD systems, only the first timeout was ever detected. Found and
  721   fixed by Richard van der Hoff.
  722 - General signal handling fixes.
  723 - Fix build when no system PCRE lib is available. Fix detection of
  724   -lpcre outside the system library path.
  725 - When fetchnews is restarted after a crash that prevented updating the active
  726   file, only print one "..as 12345 in de.test" line per group when storing the
  727   article.
  728 - Only fork() in fetchnews if fork() really works. Some systems (AmigaOS) only
  729   support vfork(), which is not sufficient.
  730 
  731 ================================================================================
  732 * 1.9.30, 2002-12-04
  733 
  734 ### SECURITY BUGFIXES
  735 - Fix subtle and rare unterminated loop (100% CPU hang) bug in doarticle(). It
  736   can only strike when an ARTICLE, HEAD, STAT or BODY command in Message-ID
  737   syntax accesses a crossposted article AFTER a GROUP command and if the group
  738   name given there is part of another group's name that the article was
  739   crossposted to. Credits to Jan Knutar for a detailed bug report.
  740   CVE Name: CVE-2002-1661
  741 
  742 ### BUGFIXES
  743 - Only consider groups (after LIST or NEWGROUPS) that match the
  744   only_groups_pcre, if one is configured. This avoids offering groups that are
  745   never fetched.
  746 - Detect and report write errors when writing the new active ("groupinfo")
  747   file.
  748 - Whitelist STAT command for NewsCache versions 0.99.18, 0.99.19, 0.99.2?.,
  749   1.1.*
  750 - RPMs built from the included .spec file now install a "config" and "filters"
  751   file, both are marked "noreplace". This should prevent these files from
  752   being lost when a SuSE RPM is replaced by one built from this file.
  753 - Leafnode will delete duplicate newsgroups from its active file. This process
  754   is case-blind. Some badly maintained upstream servers have the same
  755   newsgroup more than once, but only differing in capitalization. Leafnode
  756   will prefer the group with LESS upper-case characters.
  757 - Fix maxage = 0 regression of leafnode 1.9.21. maxage = 0 seems not to be in
  758   wide use...
  759 
  760 ### WORKAROUNDS
  761 - Blacklist STAT for servers that contain "NNTP news cache" in their
  762   greetings, reported to be necessary for NTL (UK) by Robert Marshall.
  763 
  764 ### CHANGES
  765 - Leafnode now ships with a leafnode.cron.daily file. See INSTALL.
  766 - Leafnode now ships with a filters.example file that was taken from the SuSE
  767   7.3 RPM.
  768 
  769 ### DOCUMENTATION
  770 - The newsq manual page was reworked and is more comprehensive now.
  771 - README-FQDN was corrected in respect to the dfncis.de host name.
  772 - FAQ has information on the Red Hat inetd vs. xinetd issue.
  773 
  774 ================================================================================
  775 * 1.9.29, 2002-10-23
  776 
  777 ### BUGFIXES
  778 
  779 - Fix fetchnews SIGSEGV that happens when new groups are added. Thanks
  780   to Ken Shan for tracking the bug and sending a patch.
  781 - Work with multiple upstreams that have the same server name, but
  782   different ports.
  783 
  784 ================================================================================
  785 * 1.9.28, 2002-10-21
  786 
  787 ### BUGFIXES
  788 
  789 - MacOS X 10.1 build has been fixed now (works on sourceforge Compile
  790   Farm at least). The fixes of 1.9.25 did not work.
  791 
  792 ### CHANGES
  793 
  794 - There is now a leafnode-version program that just prints the version.
  795 - Configuration file errors are now printed with the line number.
  796 - New server-specific option: only_groups_pcre, to restrict the groups
  797   that are fetched from or posted to a specific server.
  798 - The build environment has been rebuilt with automake 1.7.1 and
  799   autoconf 2.54.
  800 
  801 ================================================================================
  802 * 1.9.27, 2002-09-24
  803 
  804 ### BUGFIXES
  805 
  806 - Leafnode no longer goes into an infinite loop if your interface list
  807   as returned by ioctl(...SIOCGIFCONF...) is longer than 2047 bytes.
  808   This was a show-stopper bug without workaround (except unconfiguring
  809   interfaces or disabling IPv6, which is usually not an option).
  810 
  811   The bug was less likely to strike on home computers (except routers),
  812   as these tend to have less interfaces. More likely to strike bigger
  813   IPv6-enabled BSD servers.
  814 
  815 - Type issues on 64-bit machines (time_t is int) have been fixed.
  816 
  817 - RPM build: the spec file has been revamped, the documentation
  818   directory now has proper permissions again.
  819 
  820 - Leafnode builds again on non-IPv6 machines such as Solaris 2.6.
  821 
  822 ### CHANGES
  823 
  824 - Robustness: The allowstrangers option is now "stronger", enabling it
  825   defeats the "is the client on a local IP" check altogether -- to allow
  826   for workarounds should further bugs in this check strike us.
  827 
  828 - Documentation: The FAQ has been converted to DocBook XML and updated,
  829   and the TROUBLESHOOTING document that carried only two items has been
  830   merged into the FAQ. It comes now as plain text, HTML and PDF. The
  831   CREDITS file has been updated.
  832 
  833 ================================================================================
  834 * 1.9.26, 2002-09-20
  835 
  836 ### GENERAL
  837 
  838 - Add missing documentation LIESMICH-daemontools
  839 
  840 ### BUGFIXES
  841 
  842 - Fix paths in UNINSTALL-daemontools
  843 - fetchnews will no longer try to fork in -P (postonly) mode. (The bogus
  844   error messages around this were reported by Jan Knutar.)
  845 - fetchnews synchronizes child and parent when handing over the lock
  846   file, to prevent bogus error messages.
  847 - texpire will now skip over lost+found in the top directory and log
  848   chdir/opendir errors. (Bug reported by William Grinolds.)
  849   /var/spool/news must still be one file system and cannot be a Coda
  850   file system.
  851 
  852 ### CHANGES
  853 
  854 - newsq now prints a start banner and an explicit "the queue is empty"
  855   if it is
  856 
  857 ================================================================================
  858 * 1.9.25, 2002-08-30
  859 
  860 ### DEDICATION
  861 
  862 - Although only a symbolic measure and no consolation to any victim,
  863   this version is dedicated to all the people in the flooded areas of
  864   Central and Eastern Europe, particularly Austria, the Czech republic
  865   and Germany, where many cities have been drowned by the Moldau,
  866   Danube, Elbe and other rivers rivers that have turned into torrential
  867   currents by severe rainfall; whole cities in Saxony, Saxony-Anhalt and
  868   Brandenburg and the Northwestern Czech republic had to be abandoned
  869   temporarily.  The material damage is immeasurable, and the personal
  870   damage considerable.
  871 
  872   Protection of the environment is important and everybody's task.
  873 
  874 ### INCOMPATIBLE
  875 
  876 - Leafnode's LIST EXTENSIONS reply no longer starts with leading
  877   whitespace. The current NNTP draft no longer wants whitespace there.
  878 - Leafnode's [X]HDR <header> <message-id> commands now return
  879   the message-ID in front of the header, which is in conformance with
  880   RFC-2980 but contradicts draft-ietf-nntpext-base-15.txt which has
  881   expired on 2002-07-15 (which requires the article number to be
  882   printed, which is not available before GROUP or which is not in unison
  883   when the article is crossposted).
  884 
  885 ### GENERAL
  886 
  887 - Fix "configured hostname not accepted" issue: Leafnode now reads the
  888   configuration file before validating the hostname or creating the lock
  889   file, so the hostname configuration option becomes actually effective.
  890 - The lsort program is no longer installed. When updating from a
  891   previous version, then please remove it (the default location is
  892   /usr/local/sbin) -- it is only used (with explicit path) when you type
  893   "make update" and is not needed later.
  894 - Documentation updates, including tcpserver/daemontools instructions.
  895 - Build files have been regenerated with automake 1.6.2 (autoconf 2.53)
  896 - A tighter integration of the included PCRE directory into the build
  897   process.
  898 - German documentation is back.
  899 - Fix some PCRE compile issues.
  900 - The paths of the FILES sections of the manpages should now be correct.
  901 - The FAQ file now ships.
  902 - MacOS X 10.1/Darwin build fixes for -twolevel_namespace issue. We pass
  903   -flat_namespace to the linker.
  904 - Easier first-time installation: A script to aid setting up leafnode
  905   when daemontools and tcpserver is present.
  906 
  907 ### nntpd
  908 
  909 - Fix reading interface information on systems that have sa_len in
  910   struct sockaddr, such as FreeBSD. Leafnode would erroneously refuse
  911   connections from IPv4 clients on these machines when IPv6 interfaces
  912   were configured.
  913 - New allow_8bit_headers configuration option (default off) to accept
  914   unencoded 8-bit data (seems to be common in dk.* and no.* hierarchies)
  915 - Fix lots of minor bugs that splint turned up.
  916 - Fix some minor XHDR issues.
  917 - Fix LIST ACTIVE.TIMES (did not work at all and returned bogus data).
  918 - Add HDR support (same as XHDR, basically).
  919 - Redo the HELP output.
  920 - List HDR in LIST EXTENSIONS reply.
  921 - Fix crash when the client terminates the connection right after a POST
  922   command.  Not exploitable, reported and fixed by Fabrizio Tironi.
  923 
  924 ### fetchnews
  925 
  926 - when updating the active file fails, set a flag to try downloading the
  927   whole active file again on the next run and keep the old active data
  928   to avoid losing group lo/hi marks.
  929 - new server-specific option "noactive = 1" to defeat downloading the
  930   full active file (newsgroups list) from this server. Courtesy of Mark
  931   Brown of Debian.
  932 
  933 ================================================================================
  934 * 1.9.24, 2002-07-10
  935 
  936 ### INCOMPATIBLE CHANGES:
  937 - See all "incompatible changes" sections below.
  938 
  939 ### GENERAL
  940 
  941 - there will be no more prereleases or release candidates. people don't
  942   test them.
  943 
  944 ### nntpd
  945 
  946 - no longer crashes and disconnects when a client (slrn) sends "XOVER" before
  947   "GROUP". Makes leafnode compatible again with slrn.
  948 - address resolver fixed when IPv6 enabled
  949 - fix ARTICLE/STAT/HEAD/BODY commands with implicit number ("current
  950   article pointer"
  951 
  952 ================================================================================
  953 * 1.9.23, 2002-07-08
  954 
  955 ### INCOMPATIBLE CHANGES:
  956 
  957 - If you update to 1.9.23 and have articles in your out.going queue, fetchnews
  958   will no longer post these. To fix, do: chmod u+x /var/spool/news/out.going/*
  959   NOTE: 1.9.33 no longer needs this, it uses the u+r flag instead, but you
  960   should never need to set the flag manually.
  961 
  962 - Access from outside the local networks (as figured from IP and netmasks of the
  963   local interfaces) is now denied by default. To restore the old behaviour,
  964   check README and config.example for a new option "allowstrangers" and how to
  965   enable it. Read config.example closely! Using this is deliberately difficult.
  966 
  967 - When a client posts, syntax and semantics of the Message-ID header are
  968   checked. These tests are essential to avoid Message-ID collisions. You can
  969   still switch off Message-ID generation in your news reader and let leafnode
  970   generate a Message-ID.
  971 
  972 - Spooldir may only contain characters from the POSIX portable path name
  973   character set. These are: the small and capital latin letters a through z, the
  974   ten digits 0 through 9 and the individual characters ".", "-", "_", "/".
  975 
  976 ### KNOWN BUGS
  977 
  978 - Leafnode does not handle embedded NUL characters in news correctly.
  979 
  980 ### GENERAL
  981 
  982 - The README now contains a new section "DEBUGGING".
  983 - The INSTALL file now has an xinetd config example.
  984 - The FQDN "linux.local" is now also rejected.
  985 - Fetchnews will no longer try to post articles that nntpd is still receiving.
  986 - Bugfixes, compile warnings fixed, memory leaks fixes, possible crashes fixed.
  987 - Treating folded headers has improved.
  988 
  989 - NEWGROUPS now really works, even across fetchnews -f. fetchnews -f is
  990   now less harmful to the group low/high marks.
  991 
  992 - There is now documentation on the fully-qualified domain name issue, in text,
  993   pod and HTML format. See the README.FQDN* files.
  994 
  995 - There is a new configuration option: "nopost" (server-specific). Set
  996   "nopost=1" just below the server line to avoid posting to the server in
  997   question.
  998 
  999 - Article number treatment has improved. This should fix "pseudo article not
 1000   displayed" issues for good.
 1001 
 1002 - Most leafnode programs no longer see incomplete lines. Incomplete lines are
 1003   lines without trailing LF character.
 1004 
 1005 - When a leafnode program recreates a directory in the spool dir, the owner is
 1006   now properly set to "news".
 1007 
 1008 ### fetchnews
 1009 
 1010 - Fetchnews now filters on original header lines, rather than regenerated lines.
 1011 
 1012 - Will exit with code 2 when it could not connect to at least one upstream
 1013   server.
 1014 
 1015 ### nntpd
 1016 
 1017 - The client timeout is now configurable through "timeout_client",
 1018   patch courtesy of Jonathan Larmour.
 1019 
 1020 - No longer confuse clients with "400 Service discontinued" messages on timeout.
 1021 
 1022 - No longer resolve the local listening address to a name and use that
 1023   as fqdn (broke Message-ID generation). Reported by Andreas Muck.
 1024 
 1025 - Posts with 8-bit or control data in headers or malformatted
 1026   headers are now rejected. These articles are malformatted. (illegal!)
 1027   Only broken newsreaders generate such headers.
 1028 
 1029 - Better logging when groups are subscribed to; set debugmode = 1 in
 1030   your config file to enable, and look for "markinterest:" in the log.
 1031 
 1032 - POST now suggests a Message-ID.
 1033 
 1034 ### texpire
 1035 
 1036 - Expire groups that are not in the group.info. (This will happen when news
 1037   groups are removed upstream and the active file is re-fetched.)
 1038 
 1039 - Set groupexpire for a particular group to -1 to let texpire ignore it.  Think
 1040   of this as an archive function. Patch courtesy of Andreas Meininger.
 1041 
 1042 ================================================================================
 1043 * 1.9.22, 2002-04-19
 1044 general:
 1045 - Fix the hostname qualification logic.
 1046 - No longer use fnmatch(), but use wildmat() instead. That's well-tried
 1047   in leafnode 2.0b.
 1048 
 1049 fetchnews:
 1050 - Fix the broken NewsCache workaround.
 1051 
 1052 ========================================================================
 1053 * 1.9.21, 2002-04-08
 1054 INCOMPATIBLE CHANGES:
 1055 - leafnode never fetches articles that would be expired right away as
 1056   per the current expire/groupexpire settings. Add "clamp_maxage = 0" to
 1057   your configuration to restore the old behaviour.
 1058 
 1059 general:
 1060 - no longer segfaults when the groupinfo file is empty (when the
 1061   upstream servers are all unreachable).
 1062 - gets time zone offset against GMT right.
 1063 - overview handling now detects when articles are removed from the
 1064   "middle" of a group (i. e. which are not low or high water mark)
 1065 
 1066 applyfilter:
 1067 - no longer trashes the article high water mark.
 1068 
 1069 fetchnews:
 1070 - leafnode never fetches articles that would be expired right away as
 1071   per the current expire/groupexpire settings.
 1072 - can recover state information from a SERVERINFO~ file left behind by a
 1073   previous incomplete fetchnews run.
 1074 
 1075 ========================================================================
 1076 * 1.9.20, 2002-03-25
 1077 INCOMPATIBLE CHANGES:
 1078 - leafnode REQUIRES a valid fully qualified domain name now,
 1079   localhost.localdomain is invalid! Fix your /etc/hosts if leafnode
 1080   programs refuse to run.
 1081 - running leafnode without access control (such as tcpd from Wietse
 1082   Venema's tcp_wrappers package or xinetd/tcpserver's native access
 1083   control) is officially deprecated.
 1084 - leafnode no longer tries to post the article to all your servers, but
 1085   only to one, to prevent moderators from getting posts to moderated
 1086   groups more than once. Move your most reliable news servers first in
 1087   the configuration file.
 1088 
 1089 General:
 1090 - new locking scheme, prevents groupinfo corruption, the old locking
 1091   scheme was totally ineffective
 1092 - manual pages now contain proper paths to programs or files
 1093 - pattern matching has been fixed
 1094 - no more timezone messups in logs or generated Date: headers (backport
 1095   from 2.0beta)
 1096 - memory and file descriptor leaks have been fixed
 1097 - some more parts of NNTP chatter are subject to timeout handling
 1098 - the included PCRE package was updated to v3.5 (but better, get PCRE
 1099   3.9 or newer and install that prior to configuring and installing
 1100   leafnode)
 1101 - maintainer builds now need ./configure --enable-maintainer-mode.
 1102   Results in faster compilation for end users.
 1103 
 1104 fetchnews:
 1105 - can now safely post to NewsCache servers, 1.9.19 and older would
 1106   discard all upstream posts to NewsCache servers because NewsCache lies
 1107   about the availability of an article in STAT <Message-ID>. We use HEAD
 1108   now. (workaround backported from leafnode 2.0beta)
 1109 - upstream posts are now deleted as soon as they have successfully been
 1110   posted.
 1111 - fetchnews -P no longer segfaults
 1112 - SIGPIPE now updates groupinfo and overview information, it would kill
 1113   fetchnews before.
 1114 - log port number in "connected to" log message
 1115 - Mark Brown's workaround to "no groups available" problem with
 1116   authentication failures, but after authentication failures and fixing
 1117   username/password in the configuration file, run fetchnews -f once
 1118 
 1119 leafnode (nntpd):
 1120 - buffer underrun fixed when the command consisted only of whitespace.
 1121   Bug fix by Ralf Wildenhues.
 1122 - log our and the peer's address (to hint someone he should really use
 1123   tcpd or something similar, and to overcome "I did not order this news
 1124   group" reports)
 1125 - now mark the correct article for download in delaybody mode if the
 1126   news reader sends BODY or ARTICLE <message-id>. (only affects
 1127   crossposted articles).
 1128 - XOVER 1- now works on pseudogroups
 1129 - XOVER -n is now supported (came for free with the previous fix ;)
 1130 - STAT/HEAD/BODY/ARTICLE with "current article pointer" now work for
 1131   pseudo groups
 1132 - exits with 503 error message to the client if the own hostname is not
 1133   configured properly
 1134 
 1135 newsq:
 1136 - add a new -f option to show the failed.postings queue.
 1137 
 1138 texpire:
 1139 - the man page has been finally fixed to document that we expire
 1140   individual articles, not threads.
 1141 
 1142 Changes which are more technical and less visible:
 1143 - article numbers are now unsigned long almost everywhere
 1144 - out-of-memory conditions detected properly
 1145 - non-exploitable buffer overruns fixed
 1146 - line reading function is rock solid now, no more getaline
 1147   crashes
 1148 - mkstemp is now robust against broken implementations that
 1149   do not look at the umask
 1150 - some tuning took place, some fprintf have been replaced by fputs
 1151 - mkstemp function updated from leafnode 2.0beta
 1152 
 1153 =========================================================================
 1154 * 1.9.19 and prior: see ChangeLog.old. A separate NEWS file was not kept.
 1155 =========================================================================
 1156 
 1157  vim:tw=78:ai:com=f\:-: