- Updating package for p5 module Mail::IMAPClient from 3.14 to 3.16
- Splitting dependencies into "real depends" part and a recommended part
- Add Authen::SASL as recommended dependency
- Set gnu-gpl-v2 as license
Upstream changes:
version 3.17: Thu May 21 01:40:08 EDT 2009
- ran all test code and lib/Mail/IMAPClient.pm through Perl::Tidy
- plan on using perltidy to standardize format going forward
- added 13 tests to t/basic.t to cover more methods
- fix some broken tests
- update Makefile.PL to provide info about optional modules
version 3.17_05: Tue May 19 11:04:28 EDT 2009
Potential compatibility issues highlighted with '*':
- *reset LastError for every call to _imap_command_do()
- *run() - use _imap_command_do(), return arrayref in scalar context
- *tag_and_run() - return arrayref in scalar context
- *done() - use _imap_command_do(), return arrayref in scalar context
- *search() now returns empty arrayref not undef if no matches found
- _imap_command_do() made more flexible to avoid code duplication
- _list_response_parse renamed _list_or_lsub_response_parse
- updated POD with new/updated behavior
- append_string() now uses _imap_command_do() for Reconnectretry
- internally use defined return values instead of only LastError()
- run() updated to use same/similar code to _imap_command_do()
- make several return statements more consistent
- delete() now unsets current Folder attribute on success
version 3.17_04: Fri May 15 17:18:52 EDT 2009
- updated POD with new reconnect() method and Reconnectretry attr
- *new _imap_command() after renaming old one to _imap_command_do
support retrying commands X times EPIPE/ECONNRESET errors
- *added Reconnectretry attr to control number of retry
attempts (default is 0 - no reconnect/retry)
- *added reconnect() method to support Reconnectretry attr
reconnect and updated _imap_command() method
- *_imap_command_do will return undef if command given has no TAG
- fixed message_string() logic/errors for failed size() calls
- local-ize $! anywhere we use Carp routines as older versions
of Carp could cause $! to be reset
- several 'BUG?' comments -- raising red flag for future work
- minor cleanup of sort() logic
- reduce duplicate code, hopefully improved error handling:
new _list_or_lsub() for list() and lsub()
new _folders_or_subscribed() for folders() and subscribed()
+ new _list_response_preprocess() keeping old code/logic in
for now, but may remove in the future (for buggy servers?)
- some updates for migrate() but this method needs much work
- body_string() now handles fetch() errors
- tag_and_run now handles _imap_command() errors
- changed non-timeout CORE::select() timeout from 0.001 to 0.025
- minor cleanup of _read_line() error handling/debug output
- get_bodystructure() handle more fetch() errors
- expunge() handle select() errors
- restore_message() handle store() errors
- uidvalidity() handle status() errors
- uidnext() handle status() errors
- is_parent() use _list_response_preprocess() for parsing
- move() send delete_message() errors to stderr
- simplify size() method
version 3.17_03: Fri May 8 16:37:08 EDT 2009
- *added uidexpunge() for UID EXPUNGE UIDPLUS support
- *search() now DWIM: auto-escapes args, SCALAR refs not escaped
rt.cpan.org#44936 [cjhenck]
- _quote_search() provides auto-escape capability for search()
- many POD updates as well as some major reformatting (incomplete)
- login now fails if passwd and user are not defined
- _sysread(): $self was in args to 'Readmethod' twice
- authenticate() return undef on scheme eq "" or LOGIN
- "require" instead "use" Digest::HMAC_MD5 for CRAM-MD5 support
version 3.17_02: Fri May 1 16:44:21 EDT 2009
- cleanup of use/imported data
- use Socket $CRLF in many cases not \r\n per perlport/IMAP spec
- new Keepalive attr for use with new()/Socket() enables SO_KEEPALIVE
- LastError now uses Carp::confess for stack trace if Debug is true
- Maxcommandlength now defaults to 1000 per RFC2683 section 3.2.1.5
- added noop() to support IMAP NOOP
- _imap_command now sets LastError if a OK/$good response is not seen
- fixed fetch_hash() to return FLAGS as "" not () when no FLAGS set
version 3.17_01: Fri Apr 24 18:36:45 EDT 2009
- *new attribute Maxcommandlength used by fetch() to limit
length of commands sent to a server. This should removes
need for utilities like imapsync to create their own split()
functions and instead allows Mail::IMAPClient to hopefully
"do the right thing"
- remove extra 'use' calls for Carp and Data::Dumper
- _read_more() improperly initialized vector causing select
errors, thus timeouts were not working properly (now they
work...)
- *change default timeout 30s => 600s: 30s seems too short in
practice
- *explicit import of encode_base64 and decode_base64 from
MIME::Base64 note the code forces a disconnect from the
server on timeout as we can not easily recover from this
situation right now in the code
- *numerous changes of error messages, removing superfluous
text and now relying on LastError instead of $! or $@ when
appropriate
- separator():
+ now return undef if an error occured for NAMESPACE or LIST calls
+ *no longer defaults to '/' if NAMESPACE call does not succeed
- new internal _list_response_parse() method for parsing LIST
responses
- handle ECONNRESET errors on syswrite and mark connection as
Unconnected
+ error "Connection lost" changed to "Write failed"
- previously untrapped syswrite error now generate "Write
failed" errors
- fix in _imap_command where LastError would be erroneously
set on LOGOUT
- _record() no longer tries to infer errors based on data
being "recorded"
- _send_line()
+ cleanup in watching for: +|NO|BAD|BYE
+ now sets LastError when an unexpected response is seen
- _read_line()
+ handle select errors instead of ignoring them
+ forcefully _disconnect() on timeouts as this breaks app logic
+ reduced duplication of code on error handling
- added _disconnect() method to brute force drop connections
on timeout
- added _list_response_parse() to reduce duplicate code for
LIST parsing
- added _split_sequence() to support new Maxcommandlength argument
- fetch()
+ use new Maxcommandlength to split a request into multiple
subrequests then aggregate results before passing them
back to the caller
- fetch_hash(): added checks for failed IMAP commands
- parse_headers()
+ properly check if fetch fails
+ handle cases where $header and/or $field are not defined
- size():
+ return undef if LastError is set
+ fix case where SIZE is not found and return undef as expected
version 3.16: Mon Apr 6 12:03:41 CEST 2009
Fixes:
- set LastError when the imap_command receives an unexpected 'BYE' answer.
rt.cpan.org#44762 [Phil Lobbes]
- handle SIGPIPE cleanly.
rt.cpan.org#43414 [Phil Lobbes]
- improve handling of quotes in folder names
rt.cpan.org#43445 [Phil Lobbes]
- do not use $socket->eof(), because IO::Socket::SSL does not support it.
rt.cpan.org#43415 [Phil Lobbes]
- remove excessive reconfiguration of fastio in _read_line()
rt.cpan.org#43413 [Phil Lobbes]
Improvements:
- remove experied docs about automatically created calls, which
do not exist since 3.00
- remove verbose explanation about reporting bugs.
version 3.15: Fri Mar 20 13:20:39 CET 2009
Fixes:
- manual-page was using POD syntax incorrectly, which caused many
broken links on search.cpan.org
rt.cpan.org #44212 [R Hubbell]