Revision history for Net-IMAP-Server

1.36   Thu Jan 17 08:09:17 2012
        * Fix string literals (such as for APPEND), which have counted
          characters incorrectly since 1.32 due to newline trimming.

1.35   Mon Nov 12 03:22:17 2012
        * Switch to AnyEvent, from EV

1.34   Sat Jul 28 15:49:17 2012
        * Don't rely on $" being set to the default " " during UID
          SEARCH

1.33   Sat Apr 07 19:37:17 2012
        * Test fixes; use recv() with MSG_PEEK | MSG_DONTWAIT to
          determine if a TCP connection is in state CLOSE_WAIT

1.32   Fri Apr 06 00:45:17 2012
        * Trim newlines passed to all commands, including continuation
          lines
        * Remove erroneous extra \n on server SASL responses
        * Bump MIME::Base64 dependency, and adjust bad mime encoding
          techniques to compensate
        * Better mapping of SASL mechanism names to method names

1.31   Sun Apr 01 01:18:17 2012
        * Add test dependency on IO::Socket::SSL
        * Minor ASCII art updates

1.30   Tue Oct 25 11:30:17 2011
        * Beginnings of a testsuite based on the RFC spec
        * Prepend, rather then append, un-asked-for message attributes,
          for picky clients
        * Properly escape mailbox names with quotes in LIST/LSUB
        * Trap and report base64 errors during AUTH
        * Returning -1 from a SASL auth now returns BAD, while returning
          false returns NO
        * Send an [ALERT] if the password was sent unprotected in
          plaintext
        * Remove an incorrect call to ->socket which caused errors
          during DESTROY
        * Selecting a bogus mailbox now leaves the state unselected
        * Return BAD on CREATE or RENAME with 8-bit mailbox names or
          invalid UTF-7 encoding
        * Forbid removal of INBOX

1.29   Mon Aug  2 10:42:17 2010
        * Fix "UID SEARCH 1,2"
        * Allow "UID SEARCH *"
        * A better fix for [rt.cpan.org #58160], which is caused by a
          bug in DateTime::Format::Strptime ([rt.cpan.org #58459])
        * Fix a minor bug in UID wherein unknown subcommands would
          attempt to call a nonexistant method

1.28   Tue Jun  8 14:14:17 2010
        * Prevent warnings when CLOSE is called
        * strftime("%e") can generate leading space, which
          strptime("%e") fails to parse; parse with strptime("%n%e")
          [rt.cpan.org #58160]
        * Ensure that EXAMINE collowed by SELECT in the same mailbox
          leaves it write-able [rt.cpan.org #58162]

1.27   Mon May  3 21:27:17 2010
        * Make ->handle_command return the instance of the ::Command
          subclass that ran, for more useful subclassing

1.26   Tue Dec 15 22:31:17 2009
        * Fix ->read_only to only care about ->selected_read_only if
          the mailbox is currently selected.
        * Add a ->select callback (defautls to doing nothing) on
          mailboxes which is called when it becomes selected.
        * The content returned by FETCH BODY[1] should be the raw
          content, without decoding transport encoding.

1.25   Sat Nov  7 23:58:17 2009
        * BACKWARDS-INCOMPATIBLE CHANGE: Net::IMAP::Server::Command's
          ->log method takes a loglevel argument by default, and simply
          defers to Net::Server's logging infratructure.
        * Handle more of Net::Server's arguments to ->new, including logging
        * Pass through arguments to Net::Server any arguments to ->run
        * Support mailboxes with flat hierarchies (undef hierarchy separator)
        * Fix a bug where UID COPY set two OK responses

1.24   Fri Oct 16 11:01:17 2009
        * Fix overzealous caching during mailbox renaming
        * Bump Net::Server::Coro dep, to be able to specify SSL
          certificate paths

1.23   Fri Jul 17 17:34:17 2009
        * Fix RT#47955; session flags were never getting stored,
          causing no messages to ever be marked \Recent

1.22   Mon Jul 13 12:13:17 2009
        * Warning avoidance for "substr outside of string" warnings
        * Net::IMAP::Server::Command::UID still contained a reference
          to untagged_fetch

1.21   Thu Jul  9 14:52:17 2009
        * Bump copyright, link to mailing list
        * Remove mostly undocumented an no-servicable-parts
          session_flags
        * untagged_* renamed to _unsent_* (and thus private)
        * A bit more documentation of accessors
        * Better error message on unknown SEARCH token
        * Add caching of "start of the day in utc" for searching
        * Add extraction of "start of the Date: header in utc" for
          searching
        * Add BEFORE, ON, SINCE, SENTBEFORE, SENTON, SENTSINC support
          to SEARCH
        * Document Net::IMAP::Server::Message->expunged

1.20   Fri Jun 19 16:04:17 2009
        * The logic for STATUS UNSEEN was backwards, counting the
          number of seen messages.  Reported by Paul Miller
          <jettero@cpan.org>

1.19   Fri Jun 19 13:26:17 2009
        * Fix POD coverage on Net::IMAP::Server::Error

1.18   Wed Jun 17 14:50:16 2009
        * Handle compile errors in required commands better
        * Add missing DateTime::Format::Strptime dependency

1.17   Sun May  3 14:54:17 2009
        * Document "NO" and "BAD" die() arguments
        * Fix mailbox read-only attribute

1.16   Tue Apr  7 23:45:17 2009
        * Make UID fetches no longer O(range client requested), which
          is fragile when there are few messages but they are high in
          UID.

1.15   Mon Apr  6 12:49:17 2009
        * Calls to ->header_raw were being made on Email::MIME
          objects, instead of Email::MIME::Header objects.  Reported
          by <dan@moore.cx>

1.14   Mon Apr  6 03:55:17 2009
        * Bump Email::MIME dep, for ->header_raw method
        * Fix typo in RFC reference.  Reported by <dan@moore.cx>
        * Documentation typo fixes

1.13   Fri Mar 20 14:11:17 2009
        * More UNSEEN fixes; the UNSEEN reported by STATUS and the
          UNSEEN reported by SELECT are different beasts, and have
          been split into different methods.

1.12   Tue Mar 10 13:46:17 2009
        * Ensure that mailboxes passed to CREATE aren't trying to
          encode things they shouldn't be, by round-tripping and
          comparing.
        * Match query in LIST and LSUB against encoded path, not raw
          utf8 path
        * Support for adding new commands via 'add_command' in
          Net::IMAP::Server

1.11   Fri Mar  6 14:20:17 2009
        * Move IMAP-UTF-7 handling into model's ->split, so it runs
          for _all_ client-given input.  Then adjust ->handle_command
          to be able to send specific messages to the client on some
          exceptions.  Reported by Jan Dvorak
          <jdvorak@uikt.mendelu.cz>.
        * Add a case for the suspected edge case where a timeout or
          printing error is discovered while handling a command
        * Upper-case command name in "command not recognized" to not
          leak implementation as much

1.10   Thu Mar  5 14:27:17 2009
        * Fix a major bug where UNSEEN reported the total number of
          unseen messages in the mailbox, rather than the sequence of
          the first unseen message.  Reported by Jan Dvorak
          <jdvorak@uikt.mendelu.cz>
        * Always return un-decoded headers to the client.  Reported by
          Jan Dvorak <jdvorak@uikt.mendelu.cz>
        * Fixes for people who have set $" to something odd

1.08   Tue Feb 24 16:27:17 2009
        * UTF-7 support for mailbox naming
        * Add and document purge => 1 option to full_path

1.07   Sun Nov 23 01:03:24 2008
        * Fixed missing UNIVERSAL::require dep

1.06   Mon Nov 17 17:06:52 2008
        * Added NAMESPACE support

1.05   Mon Oct 20 16:40:19 2008
        * Fixed spelling of 'separator' -- THIS BREAKS BACKWARDS
          COMPATIBILITY if you had overridden the 'seperator' method.
        * Added some missing pod on Net::IMAP::Server::DefaultModel

1.01   Sat Aug 16 21:06:31 2008
        * Now with updated changelog and signatures - no functionality
          changes

1.00   Sat Aug 16 21:05:25 2008
        * Remove Email::Folder dep, and default load_data behavior

0.95   Wed Aug  6 18:46:09 2008
        * We can intuit the is_inbox mailbox property
        * Include a simple example server

0.9    Mon Jul  7 17:35:04 2008
        * Add update_tree hook so servers can dynamically create sub-mailboxes

0.8    Mon Jun 16 18:34:56 2008
        * Special-casing for Zimbra clients
        * client_id is a connection property, not an auth property
        * Bump the Net::Server::Coro dep

0.7    Mon May 19 13:30:17 2008
        * Per-session message flags actually stored on the session
        * STATUS is now on the mailbox

0.6    Fri May 16 13:29:12 2008
        * Add missing Net::SSLeay dep

0.5    Fri Apr 25 12:18:17 2008
        * Add 'use Coro's for the places I added 'cede's
        * Module::Install version bump

0.4    Wed Apr 23 15:24:22 2008
        * Weaken the timeout callback, so we don't leak connection
          objects
        * Don't double-store refs to connections
        * Actually clean out old keys in the connection hash
        * Try to print from the right coro, so EV doesn't complain
          about recursive entry, and then wedge the next time it
          happens.
        * Drop some more 'cede's in for commands which do many things

0.3    Tue Mar 11 12:33:14 2008
        * Connections weren't being fully closed on timeout

0.2    Mon Mar 10 16:47:52 2008
        * Initial release to CPAN