2008-05-05  iulius

	* NEWS, doc/pod/news.pod: Update the ChangeLog for Perl 5.10
	  support.

	* innd/perl.c, lib/perl.c, nnrpd/perl.c: Perl 5.10 support for INN.
	  Thanks, Jakub Bogusz, for the patch.

2008-04-30  iulius

	* NEWS, doc/pod/news.pod: Update the ChangeLog for Berkeley DB 4.5
	  (which works).

	* configure, configure.in: Fix a problem at build time: auth_krb5.c
	  should normally be compiled only if "--with-kerberos" is given to
	  configure.

2008-04-26  iulius

	* innfeed/host.c: Fix a bug in hostDeleteIpv4Addr(): after innfeed
	  has called that function, host->nextIpAddr can point outside the
	  host->ipAddrs[] array.

	* NEWS, doc/man/innfeed.1, doc/man/mailpost.8, doc/man/pullnews.1:
	  Update generated documentation.

	* doc/pod/news.pod: New changelog for INN 2.4.4 (the last one?).

	* doc/pod/pullnews.pod, frontends/pullnews.in: Fix bugs in pullnews
	  because of a lack of parenthesis. Update its documentation for -x
	  (and also add this feature).

	* doc/pod/mailpost.pod, frontends/mailpost.in: * Fix a bug when
	  mailpost either couldn't find the pathtmp directory or couldn't
	  write to it; * Add documentation for -h, -n and -o; * Add a list
	  of known headers; * Clarify the use of -b; * Fix
	  <pathdb>/mailpost-msgid.db which is <pathtmp>/mailpost-msgid.dir
	  and <pathtmp>/mailpost-msgid.pag; * Fix the usage of [newsgroups]
	  which is not optional; * It is $Database and not $lockfile in
	  dbmopen/close; * Better formatting of error mails; * Typos.

	* LICENSE: Clarify RSA's license for lib/md5.c.

	* NEWS, doc/pod/news.pod, innfeed/connection.c: Revert commit 7753
	  because innfeed uses too much CPU with it.

2008-04-17  iulius

	* NEWS, doc/pod/news.pod: Update the ChangeLog for INN 2.4.4 (new
	  features for bindaddress and bindaddress6, instead of
	  force-ipv4).

	* doc/man/innfeed.conf.5, innfeed/connection.c, innfeed/host.c,
	  innfeed/host.h: bindaddress/bindaddress6 keys can now be set on a
	  per-peer basis in infeed.conf.
	  
	  Setting "bindaddress6: none" is equivalent to "force-ipv4: true".
	  
	  Both bindaddress and bindaddress6 work simultaneously, using
	  bindaddress for IPv4 peer addresses and bindaddress6 for IPv6
	  peer addresses. If a peer has IPv6 addresses, and at least one of
	  them works, it never falls back to IPv4. If none of the IPv6
	  addresses work, it falls back to IPv4.
	  
	  Since the server cannot connect to an IPv4 address if it binds to
	  an IPv6 address and the other way around, hostIpAddr() has been
	  changed to take an extra "family" argument, so that IPv4
	  addresses are skipped for IPv6 sockets and vice versa.
	  
	  Thanks to Miquel van Smoorenburg for this patch.

2008-04-13  iulius

	* NEWS, doc/pod/news.pod: Changelog for INN 2.4.4.

	* scripts/scanlogs.in: scanlogs now rotates innfeed's log file (a
	  regexp is used to find its name in innfeed.conf). When this log
	  file reached 2 GB, innfeed began to silently die whenever it is
	  started.
	  
	  Also fix the rotation of send-nntp.log and send-uucp.log.
	  
	  Thanks to Shalon Wood for the bug report.

	* frontends/inews.c: inews now tries to authenticate if it does not
	  receive a 200 return code after MODE READER. Indeed, it might be
	  able to post even with a 201 return code (and also with another
	  codes like 440 or 480 but such codes are not RFC compliant in
	  reply to MODE READER).
	  
	  Thanks to Alan Schwartz for the bug report.

	* doc/man/innfeed.conf.5: Fix escape characters in the innfeed.conf
	  man page.

2008-04-12  iulius

	* configure, configure.in, storage/ovdb/ovdb.c: INN now supports
	  Berkeley DB 4.6. Thanks to Marco d'Itri for the patch.

2008-04-10  iulius

	* nnrpd/line.c: It seems that the SSL_read cannot be mixed with
	  select() as in the current code. SSL communicates in its own data
	  blocks and hand shaking. The do_readline using SSL_read could
	  return, but still with a partial line in the SSL_read buffer.
	  Then the server SSL routine would sit there waiting for
	  completion of that data block while nnrpd sat at the select()
	  routine waiting for more data from the server.
	  
	  (Without this patch, clients like Thunderbird, SeaMonkey or slrn
	  sometimes hang when posting using a SSL connection.)
	  
	  Here, we decide to just bypass the select() wait. Unlike innd
	  with multiple threads, the select on nnrpd is just waiting on a
	  single file descriptor, so it is not really essential with
	  blocked read like SSL_read. Using an alarm signal around SSL_read
	  for non active timeout, SSL works without dead locks. However,
	  without the select() wait, the IDLE timer stat won't be
	  collected...
	  
	  Patch from Kachun Lee.

2008-04-09  iulius

	* innfeed/connection.c: In all of the response handlers that idle
	  the connection if there's nothing left in the queue, don't idle
	  if there are writes pending. The cases where this could possibly
	  trigger are obscure and involve the remote peer doing evil
	  things, but the rest of the code handles it correctly and we were
	  still seeing assertion failures, indicating that evil may be
	  happening.
	  
	  In issueStreamingCommands, make certain that there are no pending
	  writes before idling the connection.
	  
	  Add the code to ihaveBodyDone that was already in
	  commandWriteDone to idle the connection if the queue is empty in
	  case we'd had to defer the idle in the response handler due to an
	  unfinished write.
	  
	  Whenever doSomeWrites is called with writes still pending, add a
	  work callback to do the write at the next opportunity. This
	  should eliminate a temporary connection deadlock state on
	  flushing, where the response to the IHAVE body arrived before we
	  finished writing it. Before, doSomeWrites would have failed to
	  call issueQUIT because writes were still pending, and then after
	  the writes complete, there's no code to go back and issue it
	  until the read timeout expires.
	  
	  Thanks to Russ Allbery for the patch.

2008-04-06  iulius

	* doc/man/inn.conf.5, doc/man/innd.8, doc/man/nnrpd.8,
	  doc/pod/inn.conf.pod, doc/pod/nnrpd.pod, include/inn/innconf.h,
	  innd/rc.c, lib/innconf.c, samples/inn.conf.in: Add a "nnrpdflags"
	  parameter to inn.conf (modeled on the concept of "innflags") to
	  permit passing of commandline arguments to instances of nnrpd
	  spawned from innd.

	* scripts/innreport_inn.pm: Do not report an unknown line when a
	  cancel feed is closed. Innreport does not (currently) count such
	  cancels.

	* innd/inndstart.c: This patch makes innd listen on separate
	  sockets for IPv4 and IPv6 connections if the IPV6_V6ONLY socket
	  option is available.
	  
	  There might also be operating systems that still have separate
	  IPv4 and IPv6 TCP implementations, and advanced features like TCP
	  SACK might not be available on v6 sockets.
	  
	  Thanks to Miquel van Smoorenburg for this patch.

	* doc/pod/inn.conf.pod, doc/pod/innd.pod, include/inn/innconf.h,
	  innd/art.c, innd/cc.c, innd/innd.c, innd/innd.h, innd/site.c,
	  lib/innconf.c, samples/inn.conf.in, scripts/inncheck.in,
	  tests/lib/innconf-t.c: This patch adds a new inn.conf parameter
	  called "pathcluster" which allows to append a common name to the
	  Path: header on all incoming articles. "pathhost" and "pathalias"
	  (if set) are still appended to the path as usual, but
	  "pathcluster" is always appended as the last element (e.g. on the
	  leftmost side of the Path: header).
	  
	  If the last pathname of the incoming article is the same as
	  "pathcluster", it is stripped from the path.
	  
	  Thanks to Miquel van Smoorenburg for this patch.

	* innd/Makefile: Update dependencies.

	* authprogs/radius.c: Switch xmalloc to xcalloc. Bug reported by
	  Erik Klavon.

	* innd/rc.c: Group blocks in incoming.conf are now correctly parsed
	  and no longer cause segfaults.

	* control/docheckgroups.in, control/modules/checkgroups.pl,
	  control/modules/newgroup.pl, control/modules/rmgroup.pl:
	  docheckgroups now handles wireformat articles (for using it
	  manually from the spool) and warns when there are missing or
	  obsolete descriptions.
	  
	  Newgroup control messages for existing groups now change their
	  description. If a mail is sent to administrators, it reminds them
	  to update their newsgroups file. Now pretty print the newsgroups
	  file (from one to three tabulations between the name of the group
	  and its short description). Refuse the creation of to. groups.
	  
	  Checkgroups when there is nothing to change no longer result in
	  sending a blank mail to administrators.

	* scripts/innreport_inn.pm: Better innreport processing of log
	  files (especially for Python filtering and Cleanfeed rejects).
	  Add a NoCeM entry for perl-nocem. Only ncmspool was previously
	  parsed.

	* doc/man/innd.8, doc/man/newsfeeds.5, doc/pod/innd.pod,
	  doc/pod/newsfeeds.pod, frontends/sys2nf.c, innd/art.c,
	  samples/newsfeeds.in: * Checkgroups are now properly propagated
	  even though the news server does not carry the groups they are
	  posted to. * Improve documentation as for the use of
	  "!control,!control.*" regarding the propagation of control
	  articles. * Expand "control*" to "control,control.*" in
	  documentation and samples for more accuracy. * control.cancel is
	  mandatory for innd to start so cancel messages are not fed to
	  control.

	* control/pgpverify.in, doc/man/pgpverify.1: Typos.

	* doc/man/simpleftp.1, doc/pod/simpleftp.pod, scripts/Makefile,
	  scripts/simpleftp.in: Rewrite simpleftp to use Net::FTP. Indeed,
	  ftp.pl is no longer shipped with Perl 5 and the script does not
	  work.
	  
	  * Add support for usernames, passwords and ports. * Fix typos in
	  the documentation. * Remove the use of fixscript on simpleftp. *
	  Perl warnings are now on.

	* innfeed/endpoint.c: Fix a problem with innfeed continuously
	  segfaulting on amd64 hardware (and possibly on lots of 64 bits
	  platforms); sig_atomic_t is indeed a long and not an integer
	  there.
	  
	  Patch from Ollivier Robert. Many thanks to him and also to Kai
	  Gallasch for having reported the problem and provided the FreeBSD
	  server to debug it.

	* backends/send-uucp.in: Fix a bug in the display of the used
	  compressor (cunbatch was put if arguments were passed to gzip or
	  bzip2).

	* HACKING, doc/man/active.5, doc/man/active.times.5,
	  doc/man/auth_krb5.8, doc/man/auth_smb.8, doc/man/ckpasswd.8,
	  doc/man/control.ctl.5, doc/man/convdate.1,
	  doc/man/cycbuff.conf.5, doc/man/distrib.pats.5, doc/man/domain.8,
	  doc/man/expire.ctl.5, doc/man/expireover.8, doc/man/fastrm.1,
	  doc/man/grephistory.1, doc/man/ident.8, doc/man/inews.1,
	  doc/man/inn.conf.5, doc/man/innconfval.1, doc/man/innd.8,
	  doc/man/inndf.8, doc/man/inndstart.8, doc/man/innmail.1,
	  doc/man/innupgrade.8, doc/man/libauth.3, doc/man/libinnhist.3,
	  doc/man/list.3, doc/man/mailpost.8, doc/man/makehistory.8,
	  doc/man/motd.news.5, doc/man/newsfeeds.5, doc/man/ninpaths.8,
	  doc/man/nnrpd.8, doc/man/ovdb.5, doc/man/ovdb_init.8,
	  doc/man/ovdb_monitor.8, doc/man/ovdb_server.8,
	  doc/man/ovdb_stat.8, doc/man/passwd.nntp.5, doc/man/pgpverify.1,
	  doc/man/pullnews.1, doc/man/qio.3, doc/man/radius.8,
	  doc/man/radius.conf.5, doc/man/rc.news.8, doc/man/readers.conf.5,
	  doc/man/sasl.conf.5, doc/man/send-uucp.8, doc/man/sendinpaths.8,
	  doc/man/simpleftp.1, doc/man/sm.1, doc/man/subscriptions.5,
	  doc/man/tdx-util.8, doc/man/tst.3, doc/man/uwildmat.3: Generate
	  fresh man pages for INN 2.4.4.

	* CONTRIBUTORS: Typos.

	* backends/Makefile: Add missing man page generation for send-uucp.

	* control/perl-nocem.in, doc/man/perl-nocem.8: * perl-nocem will
	  now check for a timeout and re-open the socket if required.
	  Additionally, perl-nocem will switch to cancel_ctlinnd in case
	  cancel_nntp fails after sending the Message-ID. Thanks to
	  Christoph Biedl for the patch. * Fix the count of the time spent
	  in do_nocem(): the $start and $diff variables were consecutive. *
	  Use "%d" instead of "$nr" in sprintf. * Documentation fixes: *
	  perl-nocem does not expect a message but a token. * Add
	  "--no-default-keyring" because gpg otherwise uses the one in
	  ~/.gnupg (strange). * Mention the keyring and improve a lot this
	  documentation.

	* frontends/ovdb_init.c: Patch daemonize-ovdb_init to make
	  ovdb_init properly close stdin/out/err when it becomes a daemon.
	  The issue was reported by Viktor Pilpenok and fixed by Marco
	  d'Itri. Thanks to both of them.

	* nnrpd/list.c, nnrpd/nnrpd.c: * In response to a LIST [file]
	  command, if the file does not exist, we assume it is not
	  maintained and return 503 instead of 215 and an empty file. *
	  Typo in the answer for LIST MOTD (two final dots). * Add
	  capability to LIST ACTIVE.TIMES for a wildmat pattern as its
	  third argument (LIST ACTIVE.TIMES *nntp). * The "moderators"
	  keyword was missing in the answer for HELP.

	* doc/pod/newsfeeds.pod, innd/art.c, innd/innd.h, innd/newsfeeds.c,
	  innd/site.c, scripts/inncheck.in: Implementation of the Diablo
	  quickhash and hashfeed algorithms. It allows to distribute the
	  messages among several peers (new Q flag for newsfeeds).
	  
	  Thanks to Miquel van Smoorenburg for this implementation in INN.

	* support/config.guess, support/config.sub: Update support files
	  for autoconf to their last stable version.

	* samples/control.ctl: A more up-to-date control.ctl file from the
	  ISC.

	* authprogs/Makefile, backends/Makefile, expire/Makefile,
	  frontends/Makefile, history/Makefile, innd/Makefile,
	  innfeed/Makefile, lib/Makefile, nnrpd/Makefile, storage/Makefile:
	  Update dependencies.

	* LICENSE: Update license information.

2008-01-19  eagle

	* innd/innd.c: Fix a variable reference in catch_terminate in the
	  non-sigaction case.

2007-02-10  eagle

	* lib/dbz.c: Don't use ints; we lose with large files on many
	  systems. Use xpwrite instead of pwrite to get complete writes.
	  Based on a patch by Chris Caputo.

	* storage/buffindexed/buffindexed.c: When calculating the length of
	  a buffer, cast the calculation to off_t since it may be longer
	  than unsigned long. Thanks, Kirill Berezin.

2007-02-09  eagle

	* include/inn/mmap.h, lib/dbz.c, lib/mmap.c,
	  storage/tradindexed/tdx-data.c, storage/tradindexed/tdx-group.c:
	  Rename mapcntl to inn_mapcntl and avoid having the function and
	  the wrapper define have the same name. It looks like at least
	  some compilers don't like this (and reasonably so).

2007-01-16  eagle

	* innd/cc.c, lib/inndcomm.c: Fix incomplete checking of packet
	  sizes in the ctlinnd interface in the no-Unix-domain-sockets
	  case. This is a potential buffer overflow in dead code since
	  basically all systems INN builds on support Unix domain sockets
	  these days, but let's not have that code sitting around anyway.
	  
	  Also track the buffer size more correctly in the client side of
	  this interface for the Unix domain socket case (we were thinking
	  it was smaller than it actually was).
	  
	  Thanks to zybadawg333@hushmail.com for the report.

2006-11-22  eagle

	* control/controlchan.in: Pring the newline and not $_, not the
	  other way around.

	* control/controlchan.in: When printing the blank line between
	  headers, don't also try to print $_; it's undefined at that
	  point.

2006-11-21  eagle

	* contrib/README: Various updates for new files and verb tense.
	  Remove ninpaths, which is now included in the main part of INN.
	  Patch from Julien ÉLIE.

	* control/modules/newgroup.pl: Don't send mail if the action is no
	  change. Patch from Julien ÉLIE.

2006-09-11  eagle

	* tests/runtests.c: Work around a bad interaction between the glibc
	  headers and gcc 4.1 that causes the sys/wait.h W* macros to fail
	  to compile when run on an int member of a const struct.

	* TODO: Remove the link to Dave Barr's old INN site; that page
	  seems to have gone away.

2006-09-07  eagle

	* samples/control.ctl: Update to new upstream version.

2006-09-04  eagle

	* samples/control.ctl: Update to current upstream version.

2006-08-30  eagle

	* doc/pod/control.ctl.pod: Clarify the differences between
	  verify-*, verify-*=mail, doit, and doit=mail and correct some
	  inaccuracies noted by Iulius.

	* control/controlchan.in: Handle wire format messages. Patch from
	  Iulius.

2006-08-28  eagle

	* Makefile.global.in, authprogs/Makefile, authprogs/ckpasswd.c,
	  configure, configure.in, include/config.h.in: If compiling with
	  BerkeleyDB, use its ndbm compatibility layer for ckpasswd in
	  preference to searching for a traditional dbm library. Based on a
	  proposal by Marco d'Itri.

	* frontends/ovdb_stat.c: Support for BerkeleyDB 4.4. Patch from
	  Marco d'Itri.

	* innfeed/host.c: Fix another mistake I made when merging. *sigh*

	* innfeed/host.c: Fix typo in the previous change.

	* doc/man/innfeed.conf.5, innfeed/host.c, innfeed/innfeed.h,
	  samples/innfeed.conf: Add a force-ipv4 peer configuration option
	  for innfeed that, if set, tells innfeed to never attempt an IPv6
	  connection to that host. Patch from Marco d'Itri.

	* innfeed/host.c: Tell getaddrinfo that we need a SOCK_STREAM so
	  that it won't return each address for a hostname three times, one
	  with each supported socket type. Patch from Henning Makholm by
	  way of Marco d'Itri.

	* samples/radius.conf: The RADIUS configuration has to be wrapped
	  in a server {} block. Thanks to Marco d'Itri for the patch.

2006-08-27  eagle

	* doc/man/innfeed.conf.5: Fix a mistaken backlog-limit-high instead
	  of backlog-limit-highwater and document backlog-rotate-period.

2006-08-26  eagle

	* control/perl-nocem.in: Update the documentation to use
	  --primary-keyring for importing keys and to drop
	  --allow-non-selfsigned-uid from the default options but describe
	  when it might be necessary.

	* control/perl-nocem.in: "error" is not a syslog level. Replace
	  with "err" instead. Reported by various people, including
	  Christoph Biedl.

	* innd/status.c: Report an error if we can't open the status file.
	  Reported by Bjoern A Zeeb.

	* configure, include/config.h.in: Regenerate.

	* nnrpd/commands.c: Fix another instance of treating article
	  numbers as signed.

	* nnrpd/list.c: Fix another occurrence of treating article numbers
	  as signed.

	* nnrpd/article.c, nnrpd/group.c: Print out article numbers as
	  unsigned long with appropriate casts. Thanks to Piotr Meyer for
	  pointing out places where INN was assuming signed article
	  numbers.

	* nnrpd/nnrpd.c: Address2Name6 should lowercase the hostname just
	  like Address2Name since wildmat matching is case-sensitive.
	  Thanks to Brandon Hume for the patch.

	* nnrpd/group.c: Empty LISTGROUP replies need to be terminated.
	  Thanks to David Canzi for the patch.

	* samples/control.ctl: Update chi.* and the alt.* comment.

2006-08-12  eagle

	* doc/pod/ckpasswd.pod: Update URL for the Linux-PAM System
	  Administrator's Guide.

2006-04-15  eagle

	* doc/pod/hacking.pod: Document the version of svn2cl required.

2006-04-10  eagle

	* scripts/inncheck.in: Expect fewer things to be private to the
	  news user. Most of the configuration files will never contain
	  private information like passwords.

	* site/Makefile: If creating a new history file, set the ownership
	  and mode appropriately. Reported by Ernst Boetsch.

2006-04-02  eagle

	* tests/lib/snprintf-t.c: The %n test was written incorrectly on
	  AMD64. Thanks, Ernst Boetsch.

2006-03-31  eagle

	* samples/newsfeeds.in: Clarify the comment about the ME line.

