aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Net/IMAP/InterIMAP.pm
Commit message (Collapse)AuthorAgeFiles
* pullimap, interimap: redact AUTHENTICATE and LOGIN commandsGuilhem Moulin2019-11-061
| | | | | | In --debug mode in order to avoid inadvertently receiving credentials in bug reports. --debug can be set twice to spell out these commands in full.
* libinterimap: use directories relative to $HOME for the XDG defaults.Guilhem Moulin2019-07-081
| | | | | | | | | | | | Previously getpwuid() was called to determine the user's home directory, while the XDG specification explicitely mentions $HOME. Conveniently our docs always mentioned ~/, which on POSIX-compliant systems expands to the value of the variable HOME (and the result is unspecified when the variable is unset). Cf. Shell and Utilities volume of POSIX.1-2017, sec. 2.6.1: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_01
* typo fixesGuilhem Moulin2019-05-281
|
* Net::IMAP::InterIMAP: call shutdown(2) on teardown also for type=tunnel.Guilhem Moulin2019-05-281
| | | | | | Since we now use socketpair(2) for type=tunnel (instead of a pair of unnamed pipes) we can unify communication endpoints creation and teardown.
* libinterimap: use socketpair(2) in tunnel mode.Guilhem Moulin2019-05-271
| | | | | | Rather than two pipe(2). Also, use SOCK_CLOEXEC to save a fcntl() call when setting the close-on-exec flag on the socket (even though Perl will likely call fcntl() anyway).
* libinterimap: astring is 1*ASTRING-CHAR / string.Guilhem Moulin2019-05-271
| | | | | | | | | | | | | | | Not 1*ATOM-CHAR / string. Also accept LIST responses mailbox names containing '%', '*', or ']'. From RFC 3501: astring = 1*ASTRING-CHAR / string ASTRING-CHAR = ATOM-CHAR / resp-specials list = "LIST" SP mailbox SP list-mailbox list-mailbox = 1*list-char / string list-char = ATOM-CHAR / list-wildcards / resp-specials list-wildcards = "%" / "*" resp-specials = "]"
* libinterimap: quote() the empty string as "" instead of a 0-length literal.Guilhem Moulin2019-05-271
| | | | | Compression asside, this saves 3 bytes and one round-trip on servers not supporting non-synchronizing literals, and 4 bytes otherwise.
* libinterimap: bugfix: fix escaped hierarchy delimiters in LIST reponses.Guilhem Moulin2019-05-271
| | | | | The were returned as escaped quoted specials, like "\\", not as a single character (backslash in this case).
* Bump copyright years.Guilhem Moulin2019-01-221
|
* Bump version number.Guilhem Moulin2019-01-221
|
* Net::IMAP::InterIMAP: add support for TLSv1.3 (on recent enough Net::SSLeay).Guilhem Moulin2019-01-221
| | | | | | | Also, change "SSL_protocols" default value from "!SSLv2 !SSLv3" to "!SSLv2 !SSLv3 !TLSv1 !TLSv1.1". I.e., only enable TLSv1.2 and later, which is the default in Debian's OpenSSL as of 1.1.1-2, cf. https://tracker.debian.org/news/998835/accepted-openssl-111-2-source-into-unstable/ .
* Specify minimum Perl and Net::SSLeay versions.Guilhem Moulin2019-01-201
|
* pullimap, interimap: Use $XDG_CONFIG_HOME/$NAME/config as config file.Guilhem Moulin2019-01-201
|
* Improve ESEARCH response parsing for full RFC 4466 compatibility.Guilhem Moulin2018-05-101
|
* typofixGuilhem Moulin2018-05-091
|
* Fix uninitialized value $set in quotemetaGuilhem Moulin2018-05-091
|
* Add support for untagged ESEARCH responses from RFC 4731.Guilhem Moulin2018-05-091
|
* Library: new API idle_start() and idle_stop().Guilhem Moulin2018-05-091
|
* Ensure the lower bound of UID ranges is at least 1.Guilhem Moulin2017-05-291
|
* "fingerprint" now only pins the cert's SPKI, not the cert itself.Guilhem Moulin2016-12-011
|
* Net::IMAP::InterIMAP, interimap: Add support for IMAP NOTIFY [RFC 5465].Guilhem Moulin2016-03-121
| | | | | Unsollicited LIST responses are currently ignored, hence interimap won't detect mailbox creation/deletion/subcription/unsubscription.
* Net::IMAP::InterIMAP: quit idling when a time jump of at least 30s is detectedGuilhem Moulin2016-03-121
| | | | | This forces a write, so we can better detect detect dead peers after hibernation for instance.
* Net::IMAP::InterIMAP: set SO_{RCV,SND}TIMEO on the socket so we can detect ↵Guilhem Moulin2016-03-121
| | | | dead peers
* Net::IMAP::InterIMAP: set binmode on the socket (and our pipe ends)Guilhem Moulin2016-03-121
|
* Net::IMAP::InterIMAP optimisation: ignore a new message that's immediately ↵Guilhem Moulin2016-03-121
| | | | | | expunged (before we had a chance to sync it)
* Net::IMAP::InterIMAP: Don't increase UIDNEXT when receiving EXISTS responses.Guilhem Moulin2016-03-121
| | | | | | | | | | | Indeed, if the server sends * n EXISTS * n EXPUNGE meaning a new message is received, and is immediately removed afterwards, the server might have allocated a new UID for the removed message.
* wibbleGuilhem Moulin2016-03-111
|
* IDLE: fix race condition when an untagged response is received after the DONEGuilhem Moulin2016-03-101
|
* Net::IMAP::InterIMAP: change argument order in slurp and _resp.Guilhem Moulin2016-03-101
|
* Net::IMAP::InterIMAP: don't print undefined cache values in debug messages.Guilhem Moulin2016-03-091
|
* pullimap: keep trying to pull new messages after issuing any IMAP command.Guilhem Moulin2016-03-091
| | | | | Indeed we might get an untagged EXISTS response, meaning that a new message has been received meanwhile.
* wibbleGuilhem Moulin2016-03-091
|
* typo: F_[GS]ETFL → F_[GS]ETFDGuilhem Moulin2016-03-091
|
* Net::IMAP::InterIMAP: try again if connect(2) was interrupted.Guilhem Moulin2016-03-081
|
* wibbleGuilhem Moulin2016-03-071
|
* Add an option "purge-after" to remove old messages.Guilhem Moulin2016-03-071
|
* pullimap: Remove "logfile" config option.Guilhem Moulin2016-03-071
|
* typoGuilhem Moulin2016-03-071
|
* Ensure the FD_CLOEXEC bit is 1 on sockets, logger and state files.Guilhem Moulin2016-03-051
|
* pullimap: add support for IMAP IDLE (RFC 2177).Guilhem Moulin2016-03-051
|
* pullimap: mark downloaded messages as \SeenGuilhem Moulin2016-03-051
|
* pullimap (IMAP part only)Guilhem Moulin2016-03-051
|
* Inspect the select(2) syscall's return value.Guilhem Moulin2016-03-041
|
* Relax parsing of continuation requests for for empty resp-text.Guilhem Moulin2016-03-031
| | | | | microsoft's IMAP server violates RFC 3501 by skipping the trailing space for empty resp-text.
* Don't modify the state when receiving an unsolicited FETCH response without UIDGuilhem Moulin2016-03-031
| | | | | We require QRESYNC support (RFC 7162) for syncing, which requires UID (MODSEQ) in unsolicited FETCH responses, cf RFC 7162 section 3.2.4.
* fix slurp(), useful for IDLE and NOTIFY.Guilhem Moulin2016-03-031
|
* Log and debug messages: don't prefix with a ':' for nameless clients.Guilhem Moulin2016-03-031
|
* Ensure the inbox is always used in upper-case internally.Guilhem Moulin2016-03-031
| | | | | | | | | RFC 3501: INBOX is case-insensitive. All case variants of INBOX (e.g., "iNbOx") MUST be interpreted as INBOX not as an astring. An astring which consists of the case-insensitive sequence "I" "N" "B" "O" "X" is considered to be INBOX and not an astring.
* Add an option 'SSL_protocols'.Guilhem Moulin2015-10-191
|
* Fix byte count for compression streams.Guilhem Moulin2015-10-061
|