2010-03-24  eagle

	* Rewording and editing of changes for 2.5.2

2010-03-23  iulius

	* Bump revision number.

	* Fix a call to an uninitialized value. Thanks to John F. Morse for
	  the bug report.

	* Remove a superfluous space.

	* Mention that UTF-8 is needed for LIST DISTRIBUTIONS and LIST
	  MOTD.

	* Do not allow local postings to junk groups, as it has always been
	  documented in the active man page (before commit [8805]).
	  
	  Posting will be allowed in configured to in readers.conf (local
	  postings).

	* Enforce UTF-8 for LIST MOTD and LIST DISTRIBUTIONS responses.

2010-03-21  iulius

	* mailpost should trim the References: header field when it is too
	  long. Otherwise, inews rejects the article. RFC 5537 explains how
	  to trim it.
	  
	  Original patch from Harald Dunkel.

	* Assume STDC_HEADERS is always true nowadays.
	  
	  CTYPE is no longer useful; yet, as Russ Allbery hints at, we keep
	  the cast because it remains the case that passing signed
	  characters into is*() functions can cause problems on some
	  platforms. Some implementations do straight table lookups and, if
	  given what they think is a negative number, will happily
	  dereference memory off the beginning of the table.

	* actsync rejects syncing newsgroups whose components start with
	  '+', '-' or '_'. RFC 5536 in section 3.1.4 states that these MUST
	  be accepted by news servers (and innd does so), even though their
	  use is reserved.
	  
	  actsync now supports them, as well as a hierarchy name that
	  starts with one of these characters.
	  
	  Thanks to Florian Schlichting for the patch.

	* Remove obsolete AC_HEADER_DIRENT and (unused) AC_STRUCT_TM.

	* Change how innfeed logs its article counts. A checkpoint is added
	  just before a connection is closed. Checkpoints contain values
	  accumulated since the last checkpoint. This way, innreport can
	  rely on checkpoints only, so as to produce more accurate stats.
	  
	  See also commit [9009] for innd.

2010-03-16  iulius

	* Properly show in innreport news clients that failed to post
	  articles.

	* Prevent negative values from being reported in nnrpd for the
	  number of groups read by a client.

	* Silent two warnings (gethostbyaddr and getpeername) that used not
	  to be reported. A change in nnrpd previously broke that.

	* Properly count the number of groups opened during a session, and
	  which contained at least an article.
	  
	  Previously, the count was not taken into account when groups were
	  opened with no new articles in any of them. And it was taken into
	  account for groups with no articles, provided that at least one
	  contained an article.
	  
	  The result is now more coherent.

	* innreport was not properly summing post errors: the domain count
	  was not done (though configured in innreport.conf), and the
	  reader count was not working.

	* Better report with innreport: NoCeM notices with only bad
	  messages will now be shown, innxmit feeds with no accepted
	  articles will also be shown, as well as news readers which never
	  read any article (for instance those that only post).

	* Change how innd logs its article counts. A checkpoint is added
	  just before a connection is closed. Checkpoints contain values
	  accumulated since the last checkpoint. This way, innreport can
	  rely on checkpoints only, so as to produce more accurate stats.

2010-03-14  iulius

	* Remove the check for newsgroups containing only ASCII characters
	  when receiving a newgroup control article. Otherwise, UTF-8
	  characters would cause a reject of the control article.

	* Better wording, and a POD typo. Commit different from INN 2.6.0
	  because IHAVE is still handled as a separate POST command for
	  nnrpd in INN 2.5.x.

	* Fix a bug in tradindexed cache entries which made innd throttle
	  because the oldest cache entry couldn't be found. It thought the
	  cache was empty, kept opening copies of the same overview files,
	  and eventually ran out of available system open file descriptors.

	* Do not truncate to 9 characters the name of a host when
	  unspooling files with rnews.

	* Properly create datarootdir and pathhttp with the rights
	  associated to the news user and the news group.

	* When answering to IHAVE, innd was sending a checkpoint to the
	  remote server in case it was time to write a checkpoint to
	  syslog.

2010-02-16  iulius

	* Add a new keyword to news.daily: "procbatchdir" specifies the
	  backlog directories of innfeed when several instances of innfeed
	  are running or when its configuration file is not the default
	  one.

	* scanlogs was expecting the default innfeed.conf file to look for
	  the log file to rotate.
	  
	  Also fixed a bug in news.daily: procbatch was called without
	  specifying the innfeed backlog directory.

	* Update the size limit of block devices. It has changed since the
	  time our documentation was written.
	  
	  Thanks to Miquel van Smoorenburg and Russ Allbery.

2010-02-15  iulius

	* Update to latest control.ctl file from ISC.

	* Update to latest version of config.guess and config.sub.

	* Update to libtool 2.2.6b.

2010-02-09  iulius

	* Regular expression should only match at the beginning of the
	  line. Otherwise "./configure --prefix=/opt/portable" will fail on
	  test 8 because additional lines matches "port". Test 8 has to be
	  adjusted to not count and depend on comment lines.
	  
	  Besides, fix an issue of undefined domain or fromhost being
	  unset.
	  
	  Reported by Heiko Schlichting.

2010-02-08  iulius

	* tdx-util manpage does not know of -F option for correcting
	  errors.
	  
	  Patch from Heiko Schlichting.
	  
	  Also fix a few typos.

	* Variable ARTpathme is filled but not used anywhere.
	  
	  It was used in INN 2.3 so as not to process ihave and sendme
	  control messages we sent ourselves.
	  
	  Patch from Heiko Schlichting.

	* Comment corrected: arguments of ok_double() are double, not
	  integer.
	  
	  Patch from Heiko Schlichting.

	* Comment corrected: ok_article produces five test results, not
	  three.
	  
	  Patch from Heiko Schlichting.

	* expire.ctl documentation should use examples with reasonable
	  limits for min/max of Expire: headers.
	  
	  Patch from Heiko Schlichting.

	* dbzstore does return DBZSTORE_RESULT, not bool.
	  
	  Patch from Heiko Schlichting.

	* Use Perl and Python filters on message-ID when articles are given
	  to innd via TAKETHIS. The new RFC-3977 structure of the TAKETHIS
	  command easily allows such a check.

	* Log the port number of a connection (nnrpd).

	* When using tradindexed, the overview data for a cancelled article
	  is now properly immediately removed from the overview.
	  
	  OVcancel was failing because the article number could be higher
	  than the cached high water mark. The overview data is now
	  reopened so as to check the actual high water mark. The article
	  number was not always parsed without error (a trailing "\r\n" may
	  be present).
	  
	  Thanks to Lars Magne Ingebrigtsen for the patch.

	* When a user is allowed to locally post articles, then LIST ACTIVE
	  and LIST COUNTS will return the right "y" flag (instead of "n" or
	  "x").

	* Do not hide "j" and "x" status in LIST ACTIVE answers.
	  
	  Use NF_FLAG_* macro instead of hard-coded chars for the status of
	  a newsgroup.

	* Allow "Aj" in newsfeeds (new in INN 2.5.2).

	* Fixed a bug in the newsfeeds "C" flag: the count of followup
	  groups was one less than the real number. When the value of the
	  Followup-To: header is "poster", it is no longer considered to be
	  a followup.
	  
	  Also fixed the default value of the "C" flag: 2 instead of 1.
	  
	  Thanks to Dieter Stussy for the patch.

	* Fixed a bug in how mailpost handles cross-posting feature.
	  
	  Without this patch, mailpost does not detach from sendmail, i.e.
	  sendmail starts one mailpost after the other, instead of running
	  all mailposts for a new message in parallel.
	  
	  Thanks to Harald Dunkel for the patch.

	* Fix a typo in the name of a variable.
	  
	  Thanks to Manuel Pegourie-Gonnard for the bug report.

	* Mention that when logtrash is set to false, unwanted.log is no
	  longer generated.

	* Better explanation of why SASL_CONTINUE must be changed to
	  SASL_BADPROT. Approved by Ken.

	* Clarify how posting backoff is activated.
	  
	  Thanks to Manuel Pegourie-Gonnard for the report.

	* The PID is written in nnrpd.pid when the default port is used.
	  
	  Thanks to Benoit Izac for having reported that.

2010-01-28  iulius

	* Revert commit [8933]. No longer check how many headers an article
	  has when posted via inews.

2010-01-24  iulius

	* A new option has been added to inews. When the "-m" flag is
	  specified, the corresponding value will be used to determine the
	  maximum number of header fields that are accepted for an article.
	  The default was 50 and it is now configurable. Thanks to Torsten
	  Jerzembeck for the bug report.

2010-01-23  iulius

	* Updated changelog for INN 2.5.2.

	* Properly return 501 instead of 502 when a peer is already
	  authenticated and sends a syntactically invalid AUTHINFO command.

2010-01-22  iulius

	* Add a new parameter to inn.conf: logtrash, used to add a line in
	  the news log file to report unwanted newsgroups.

	* Increase the allowed difference in the result of the inndf test
	  suite. (It periodically fails for an unkwnown reason...)

	* Though it currently does no harm to use ngp here, it is better to
	  have another variable (in case the logic of the code changes in
	  the future, ngp may be used for another purpose and should not be
	  initialized here).
	  
	  See commit [8920].

	* Set a value to INN_HISTORY_H.

	* Check whether a newsgroup has been selected, before asking for
	  authentication.
	  
	  Answer to retry later when POST is not allowed due to backoff
	  limits.

	* When a newsgroup is empty, use 0 for the current article number
	  (instead of the last known low water mark).

	* Update all INN code to use include/inn/nntp.h for NNTP codes and
	  eliminate include/nntp.h.

	* A new check has been added to newsfeeds entries: "Aj", when
	  present, adds the capability to feed articles accepted and filed
	  in "junk" (due to wanttrash) to peers based on their newsfeeds
	  feed patterns applied to the Newsgroups: header as though the
	  article were accepted and all those groups were locally carried.
	  This is useful if you want to run INN with a minimal active file
	  and propagate all posts.
	  
	  Thanks to Andrew Gierth for the patch.

	* innconfval no longer maps NULL string or list values to an empty
	  string or list. These values should really be undefined. In
	  particular, it fixes an issue reported by Kamil Jonca about nnrpd
	  inserting an empty Organization: header when the organization:
	  parameter in inn.conf was unset.

	* Fixed a bug in the parsing of the ovgrouppat: wildmat in inn.conf
	  that prevented overview data from being generated when poisoned
	  groups were specified but a latter sub-pattern made the group
	  wanted.
	  
	  Add complete support for uwildmats in ovgrouppat: negated
	  patterns "!" are now taken into account (and not considered as
	  poisoned patterns "@").
	  
	  Optimize how ovgrouppat is handled.
	  
	  Thanks to D. Stussy for the bug report.
	  
	  Also fix a wrong memchr length.

	* Fixed a bug in nnrpd Perl filter: a header field whose name
	  begins with the name of a standardized header field was not
	  properly taken into account. (For instance "Organization-Test".)

	* When an unauthenticated user tried to post an article, nnrpd
	  replied 440 (posting not allowed) instead of the right 480
	  (authentication required) when the user might be able to post
	  after authentication.
	  
	  Thanks to Daniel Weber for the bug report.

	* When adding an overview line with OVadd(), check that Xref: is at
	  the beginning of an overview field (that is to say that a
	  tabulation precedes it).
	  
	  Otherwise, if for instance one has User-Agent:full in LIST
	  OVERVIEW.FMT and an article is received with the following header
	  field: User-Agent: test Xref: server test:50 then the overview
	  data for article 50 in newsgroup test is replaced by the one of
	  this article. And the real article number of this article is
	  unknown for the overview.

	* Add support for the "POSTED" diag-keyword in nnrpd, as described
	  in RFC 5537. In particular, nnrpd checks that the article does
	  not already contain a "POSTED" diag-keyword.

	* HDR and OVER commands now return the right 423 code (instead of
	  420) when the current article number is used but the article no
	  longer exists.

2010-01-17  iulius

	* The O flag in newsfeeds now relies on the contents of the
	  Injection-Info: header (or X-Trace: header if there is no
	  Injection-Info: header) to determine the origin of an article.
	  
	  Make public the skip_cfws() function so as to skip CFWS defined
	  in RFC 5322.

	* Use case-insensitive matches for: - distributions, - path
	  identities, - IMAP commands, - header names, - control commands.
	  
	  Message-IDs are case-sensitively matched, except for history
	  hashes.
	  
	  Note that newsgroups are still matched case-sensitively.

	* Fix a bug in keyword generation code: an initial comma was still
	  added at the beginning of the Keywords: header (when the first
	  word was a noised one).

	* Fixed a bug when HDR, XHDR and XPAT are used when virtualhost is
	  set to true in readers.conf. The Xref: header of articles posted
	  to only one newsgroup appears empty.
	  
	  The offset count is too large by one in virtual hosting.

	* Use "!!" as diag-match in the Path: header after the name of the
	  virtualhost when virtualhost: is set to true in readers.conf and
	  it is added at the beginning of the header.

	* Fixed a bug to control-only feeds: junked non-control articles
	  were being fed down control-only feeds. Thanks to Andrew Gierth
	  for the patch.

	* * Update protocol differences for innd, now that RFCs 3977, 4643
	  and 4644 have been implemented.
	  
	  * Mention that the -X flag is unset by default.
	  
	  * The Lines: header is not added by *innd*.
	  
	  * Other typos.

	* Mention new RFC references:
	  
	  974 -> 5321 (SMTP) 822 and 2822 -> 5322 (mail) 2373 -> 4291
	  (IPv6) 2553 -> 3493 (IPv6 socket) 2060 -> 3501 (IMAP) 2279 ->
	  3629 (UTF-8)

	* Typos. And use Injection-Info instead of NNTP-Hosting-Host (sic).

	* Typos.
	  
	  Use ":" with chown, and not ".", as separator for group name.

	* Note that the "L" reading/posting access in readers.conf is also
	  in effect for groups with status "x" (and not only "n").
	  
	  A secure layer can also be negotiated with AUTHINFO SASL.

2010-01-16  iulius

	* * Add checks for Archive:, Archived-At:, Injection-Date:,
	  Injection-Info: and User-Agent: headers.
	  
	  * No longer check for the Injector-Info: one (it was standardized
	  under Injection-Info:).
	  
	  * Check (but do not generate) the Injection-Date: header.

	* Add access to the new header field Comments: within Perl and
	  Python hooks for innd.
	  
	  Also update the POD documentation and the Python sample.

2009-12-30  iulius

	* Commit 8765 (mandatory AUTHINFO USER for authenticated peers)
	  will be only in INN 2.6.0 -- not INN 2.5.2.

2009-12-21  iulius

	* Search for gpgv2 (besides gpgv). Otherwise, GnuPG cannot be found
	  on a few platforms like FreeBSD.

	* Typo.

2009-12-16  iulius

	* Fix a bug in the daily Usenet report: a few lines did not appear
	  in the report whereas the total still took them into account.
	  These lines do not appear when the peer does not respond during
	  the whole day. They now appear (and every article is marked as
	  spooled).

	* Do not overwrite LOCKS from innshellvars in case someone in the
	  future expects it to have the value in innshellvars in the entire
	  script.
	  
	  Also prevent a call to LOCK afterwards in the script from
	  failing.
	  
	  Thanks to S.P.Zeidler for the patch.

2009-12-07  iulius

	* Fix the use of an uninitialized value in mailpost.
	  
	  Patch from Harald Dunkel.

2009-12-04  iulius

	* Add access to three new headers within Perl and Python hooks for
	  innd:
	  
	  * Archive [RFC 5536] * Archived-At [RFC 5064] * Summary [RFC
	  5536]
	  
	  Also update the POD documentation and the Python sample.

2009-12-03  iulius

	* Fix a typo in the name of the news.lists.filters newsgroup.
	  
	  Thanks to John Marshall for having noticed it.

	* Add dependencies for tinyleaf compilation.
	  
	  It was not recompiled when changes were made to its dependencies.

	* Improve gcc warnings on printf-like function calls.

	* Implement LIST COUNTS. It is a combination of LIST ACTIVE and
	  GROUP. It returns the same result as LIST ACTIVE except that the
	  number of articles in a newsgroup is inserted before its status.
	  
	  LIST COUNTS was first implemented in Highwinds products (e.g.
	  Cyclone, Tornado, Typhoon, Twister -- when they support readers).

2009-11-29  iulius

	* Typos.

	* LIST SUBSCRIPTIONS recognizes an optional argument: a wildmat can
	  now be specified to restrict the results of this command to
	  specific newsgroups.
	  
	  Also change the comment returned after the 215 code (the
	  newsgroups are now "recommended").
	  
	  Even though a user does not have any right to read groups, let
	  him see a possible message of the day (LIST MOTD).

2009-11-28  iulius

	* tdx-util was improperly considering empty overview fields as
	  malformed overview data.

2009-11-27  iulius

	* * nnrpd now checks the syntax of the Message-ID: header.
	  
	  * Fixed a bug when nnrpd sends "IHAVE <mid>\r\n" to innd.
	  Arbitrary commands could be passed to innd because nnrpd did not
	  ensure the validity of the syntax of the message-ID.
	  
	  * The permanent variable was not properly set on IHAVE rejects
	  and defers.
	  
	  * innd now accepts commands ending with only "\n".

2009-11-20  iulius

	* * Mention that the distributions file should be encoded in UTF-8.
	  
	  * Mention that the motd.news file should be encoded in UTF-8, and
	  dot-stuffed.
	  
	  * Typos.

2009-11-17  iulius

	* When processing a checkgroups, do not take into account
	  duplicated lines with localgroups.

	* Integrate showtoken into the main distribution. "sm -c" will now
	  show clear, decoded information about storage API tokens.
	  
	  A new SMexplaintoken() function has been added to the storage
	  manager.

2009-11-15  iulius

	* No need to treat expire.log differently than other log files
	  during its rotation.
	  
	  Patch from Florian Schlichting.

	* Add two log messages for bad commands (too long NNTP command or
	  argument) in innd.

	* When "lowmark" was used without "expireover" in news.daily, the
	  warning was never shown (the file it was written into was rotated
	  before being treated).

	* Update the changelog for INN 2.5.2.

	* Check LIST output for correct dot-stuffing.

	* news.daily: don't send superfluous mails when "nomail" is given
	  
	  Make sure that when news.daily is called with "nomail", mail is
	  only sent when there is real output. Previously, there would
	  always be headings and empty lines useful to structure the full
	  report, which are now ommitted.
	  
	  Also, postexec has been moved up to be included in the regular
	  mail, and the "nomail" definition of ${MAIL} is no longer
	  overwritten with the default.
	  
	  Thanks to Florian Schlichting for this patch.

	* This patch cleans up a little cruft (${T}, ${PROBS}) left in
	  scanlogs since its rewrite by Gary Palmer in September 1997.
	  
	  Thanks to Florian Schlichting for this patch.

	* Documentation fix: a group with status "j" can receive local
	  articles.
	  
	  Mention that groups with status "n" or "x" can receive local
	  posts, if configured to.

	* Wording: "flag" -> "status" for the last field of the active
	  field.
	  
	  Also fix a typo in hook-python.

	* Confusion between DISTRIB.PATS and DISTRIBUTIONS.
	  
	  LIST ACTIVE.TIMES now accepts a third argument (newsgroups
	  wildmat).
	  
	  Mention LIST HEADERS [MSGID|RANGE].

	* It is a POST capability, not a READER one.

	* Wording of LIST answers.

	* "all" and "world" distributions should not be used according to
	  USEFOR (RFC 5536).
	  
	  Fix the doc: when the distributions file is missing, 503 is
	  returned, not an empty answer.

	* innxmit currently requires the message-ID after 501.

	* RFC 3977 compliance:
	  
	  * innxbatch and innxmit now recognize 403 for a problem
	  preventing the action from being taken.
	  
	  * innxmit now also recognizes 501 when there is a syntax error
	  and considers it as a reject (IHAVE/CHECK/TAKETHIS).

	* A password is not mandatory with AUTHINFO USER/PASS. A username
	  may be enough to authenticate according to RFC 4644.

	* With AUTHINFO USER/PASS, the username is mandatory.

	* Use uppercase letters.

	* tinyleaf should use 201 and not 200 as initial greeting. Using
	  POST is not possible.

	* Streaming commands were still allowed when streaming was
	  deactivated.

	* * Fix a long-standing bug in TAKETHIS: when authentication was
	  required, a 480 code was answered before having received the
	  whole multi-data block, which broke the NNTP protocol.
	  
	  * Implement RFC 3977 and 4644 for streaming. TAKETHIS is now
	  totally RFC-compliant and checks the syntax. (However, 501 is
	  still not sent for interoperability reasons).

	* Better response when an article is cancelled.

	* When XBATCH answers 501, it is because of an invalid size, not a
	  missing size (the new parser takes care of it before calling
	  XBATCH).

	* HDR, XHDR and XPAT were not properly showing leading spaces in
	  header values.
	  
	  Besides, CR and LF were both changed to spaces. It is not what
	  should be done: CRLF should be removed and CR, LF, NUL, TAB
	  should be changed to spaces after the removal of CRLF.

	* * Add a parameter to wire_findheader() so as to keep initial
	  whitespaces, if needed. It is USEFOR-compliant (RFC 5536).
	  
	  * archive, makehistory and tdx-util now generate valid overview
	  data (with leading spaces).
	  
	  * Fix a bug in archive which did not change LF (withouth CR) into
	  spaces when generating overview data.
	  
	  * Update the test suite.

	* In streaming mode, there is no code to defer an article sent via
	  TAKETHIS. When the server was paused, we used 403 (temporary
	  failure).
	  
	  However, RFC 4644 mentions that we MUST send 400 here and close
	  the connection so as not to reject the article.

	* Fix a bug introduced by commit 8437. If the Message-ID: or the
	  Supersedes: headers contains trailing white spaces, the article
	  is stored corrupted (we have a '\r' inside the header).
	  
	  Introduce more intelligence in the parsing (see a wish explained
	  in commit 6921) and retain the removed character to properly put
	  it again after the parsing.

	* If keyword generation is set to true in inn.conf but the
	  Keywords: header is not stored in the overview, warn the news
	  administrator and deactive keyword generation (because it is
	  useless and eats resources for nothing).

	* Improve syntax checks on message-IDs: nnrpd was only based on RFC
	  3977, and innd on RFC 1036. They are now both based on RFC 5536
	  (USEFOR).

	* Record the extra persistant state of NNTP commands per channel
	  instead of a static global variable.

	* * Update the prototype of the function for keyword generation
	  code when INN is compiled without that support.
	  
	  * Add two new files for the test suite in the MANIFEST file.
	  
	  * Fix two gcc 4.4 cast warnings.

	* * Add a new "unsigned long" type to the configuration parser. It
	  will properly warn the user when a variable contains a negative
	  integer. It will prevent INN from crashing at several places
	  (like a xmalloc(-5) which in fact allocates 4GB of memory on a
	  32-bit architecture).
	  
	  * Modify lots of casts (some are now useless, others needed).
	  
	  * Also update the test suite, adding case tests for unsigned
	  integers and lists.

	* * The keyword generation code now generates a Keywords: header
	  only if the original article does not already have one.
	  
	  * Fixed a segfault because of a possible invalid pointer beyond
	  the allocated Keywords: header.
	  
	  * In case the generated Keywords: header is empty, nothing will
	  be retained (because "Keywords: \r\n" is an invalid header).
	  
	  * The generated Keywords: header now does not begin with a comma.

	* Fix a memory leak in the LISTGROUP command when the provided
	  range is invalid. And in GROUP/LISTGROUP commands when the client
	  does not have read access.

	* Fix a memory leak in the POST command when the Newsgroups: header
	  is invalid.

	* When INN is compiled without SASL support, AUTHINFO SASL is an
	  unkwnown AUTHINFO command. It should return 501 (syntax error)
	  instead of 503 (not mentioned in RFC for that case).

	* Fix a bug in cvtbatch which was returning only the size of the
	  headers of an article with the "b" flag. It now correctly returns
	  the size of the whole article (which is what "b" is supposed to
	  do).
	  
	  Also add a missing free() call.

	* Change a few log lines.

	* Remove dead code in batcher (it is no longer possible to use file
	  names).

	* When keyword generation was done on an article which has a
	  Keywords: header whose length is greater than the keylimit:
	  parameter, innd crashed. Change memcpy to strlcpy.

	* innreport was not correctly summing innd stats when the hostname
	  was an IPv6 address instead of a fully qualified domain name.

	* Fix two gcc warnings caused by (size_t *) and (unsigned int *)
	  casts.

	* After successful authentication, MODE-READER is not an available
	  capability.

	* Call the function for MODE CANCEL before the check on the length
	  of the arguments.

	* When the argument to CHECK is not valid, make sure we properly
	  answer 438 with the whole given argument.

	* * Add support for whitespaces in username/password for AUTHINFO
	  USER/PASS commands.
	  
	  * Properly retain the whole (possibly syntactically wrong)
	  message-ID of CHECK/TAKETHIS commands.

	* Implement CAPABILITIES in innd.

	* Improve authentication in innd and implement RFC 4643 (AUTHINFO
	  USER/PASS):
	  
	  * If a feeder will not be able to authenticate (because it
	  already has access to every feeder commands), 502 is returned
	  instead of letting it authenticate [and fail to].
	  
	  * Do not allow AUTHINFO PASS before having sent AUTHINFO USER.

	* Document how nnrpd differs in the implementation of RFC 3977.

	* Fix the test suite because of a change of return value when an
	  article is totally empty.

	* Add support for the third wildmat argument to LIST commands.
	  
	  Also check that the output does not contain a dot on a single
	  line.

	* If ".\r\n" was put into motd.news, the result of LIST MOTD was
	  breaking the NNTP protocol.

	* When innd cannot provide information for LIST NEWSGROUPS and LIST
	  ACTIVE.TIMES, it now returns 503. It was giving an invalid result
	  (".\r\n" without any response code!).

	* Return 502 (permission denied) or 401 MODE-READER to LIST
	  commands when the feeder cannot use LIST commands.

	* Fix a bug when articles were fed to innd via IHAVE or TAKETHIS
	  with an empty article: the article terminator was not recognized.
	  Therefore, subsequent NNTP commands were eaten inside the
	  article...
	  
	  See also commit 8149 for the same issue with an empty body.

	* * Return 435/438 instead of 501 to IHAVE/CHECK commands for
	  compatibility reasons.
	  
	  * When a CHECK/TAKETHIS command line is too long and no streaming
	  is allowed, 500 must be returned (these commands are unknown).

	* Remove dead code.

	* Missing to deallocate grouplist when an error occurs when
	  accessing the active file.

	* Return 412 (no group selected) instead of 501 (syntax error) when
	  using HEAD/STAT with an article number.

	* * Improve logging of MODE commands in news.notice.
	  
	  * Specify that MODE READER cannot be sent after a successful
	  authentication because the client is known as a reader.

	* Improve the greeting message and say we are in transit mode with
	  innd.

	* * Add a flag to each NNTP command so as to mention whether it can
	  be used without being authenticated (AUTHINFO, HELP, MODE and
	  QUIT).
	  
	  * Eliminate the special casing of the state CSgetauth. Whether
	  the peer has authenticated is now stored in the channel rather
	  than in the channel state. It simplifies a lot the code.
	  
	  * Fix a bug in the response for reader commands: innd was
	  answering with a superfluous blank line when readers were not
	  allowed.

	* Add support for whitespaces in usernames/passwords provided with
	  AUTHINFO USER/PASS. nnrpd was previously considering as invalid
	  passwords like "a b" (two arguments "a" and "b" when only one was
	  expected) or parsing " ab" as "ab" (stripping the leading space).
	  
	  nnrpd now treats everything after the first whitespace character
	  following AUTHINFO USER/PASS, up to, but not including, the CRLF,
	  as the username/password.
	  
	  Thanks to Jeffrey M. Vinocur for the initial patch.

	* Mention in the documentation that when "nnrpd -i" is used (for an
	  initial command), the connection is closed after the response.

	* * Add a decent parser to innd for NNTP commands. It now puts into
	  a table the given arguments. It permits to have a far better
	  grammar parser (commands like "IHAVE<mid>" are no longer valid,
	  and commands like " IHAVE <mid> " are now valid).
	  
	  * The length of each NNTP command is no longer necessary to be
	  kept in memory by the command handler.

	* Typos, and mark MAXHEADERSIZE to be fixed in innd code.

	* Do not take into account leading white spaces in NNTP commands in
	  the RTlong case.

	* Do not close the connection upon receiving an NNTP command
	  containing only spaces!

	* Ignore lines smaller than 2 bytes (that is to say lines
	  containing only "\r\n" or something else like "a\n").

	* * If the length of NNTP arguments is too long (> 497 bytes), a
	  501 error is now returned.
	  
	  * If a command is given less (or more) arguments than expected, a
	  501 error is now returned.
	  
	  * Improve the HELP output for innd, specifying expected
	  arguments.
	  
	  * HEAD answers 412 (not in a newsgroup) when requesting an
	  article number. It was previously sending 501 (syntax error in
	  mesasge-ID).

	* For unimplemented NNTP commands like SLAVE, do not return 501
	  when the command line is too long, but 500.

	* NNTP compliance (RFC 3977):
	  
	  * Check whether the NNTP command sent by a news client is too
	  large (> 512 bytes). Return an error (500 or 501, depending on
	  the base command) if it is the case.
	  
	  * Send 400 instead of 500 when innd closes the connection after
	  10 (BAD_COMMAND_COUNT) unrecognized commands.

	* Use integers instead of strings for NNTP response codes (HEAD and
	  STAT).

	* Return a comment for 205 (QUIT), 235 (IHAVE OK) and 400 (failure
	  and exit) response codes. Do not use strings from include/nntp.h.

2009-11-01  iulius

	* Convert the documentation for innxmit into POD.

	* * New "t" flag for "-w" with cvtbatch, so as to retrieve the
	  arrival time of an article.
	  
	  * Convert the man page to POD. Mention the default value for
	  "-w"; it is no longer possible to use file names with cvtbatch.

2009-10-17  iulius

	* Bump version numbers of STABLE (2.5.1 -> 2.5.2).

