Commit message (Collapse) | Author | Age | Files | ||
---|---|---|---|---|---|
... | |||||
* | libinterimap: use socketpair(2) in tunnel mode. | Guilhem Moulin | 2019-05-27 | 3 | |
| | | | | | | 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). | ||||
* | interimap: fix handling of mod-sequence values greater or equal than 2 << 63. | Guilhem Moulin | 2019-05-27 | 2 | |
| | | | | | | | | | | | | | | | SQLite processes every INTEGER values as a 8-byte signed integer, so we need to manually do the conversion from/to uint64_t client-side if we don't want to overflow or receive floats. https://www.sqlite.org/datatype3.html#storage_classes_and_datatypes http://jakegoulding.com/blog/2011/02/06/sqlite-64-bit-integers/ We could also do the same trick for local/remote UIDs, UIDVALITY and UIDNEXT values to slim the database down at the expense of pre/post- processing. (Values of SQLite's INTEGER class are 1, 2, 3, 4, 6, or 8 bytes signed integers depending on the manitudes, so we could save some space for values ≥2³¹.) But that seems a little overkill. | ||||
* | interimap: Enforce SQLite foreign key constraints. | Guilhem Moulin | 2019-05-27 | 2 | |
| | | | | | | | | Setting the 'foreign_keys' PRAGMA during a multi-statement transaction (when SQLite is not in autocommit mode) is a no-op. https://www.sqlite.org/pragma.html#pragma_foreign_keys https://www.sqlite.org/foreignkeys.html#fk_enable | ||||
* | interimap: avoid caching hierarchy delimiters forever in the database. | Guilhem Moulin | 2019-05-27 | 2 | |
| | | | | | | | | | | | | | | | | | | | | Following recommendation from https://www.imapwiki.org/ClientImplementation/MailboxList#Hierarchy_separators Instead, use null characters internally, and substitute them with the local and remote hierarchy delimiters (which thus no longer need to match) for IMAP commands. This require a database schema upgrade to alter the mailbox name column type from TEXT to BLOB. We're using SQLite's user_version PRAGMA to keep track of schema version; beware that `.dump` doesn't export its value! In logging messages, local and remote mailbox names are shown as is (with their respective delimiters) while database mailbox names are shown by replacing null characters with the *local* hierarchy delimiter. Moreover for mailbox names specified on the command line or the configuration file (with the "list-mailbox" option) the *local* hierarchy delimiter should be used. | ||||
* | interimap: Refactor --target handling. | Guilhem Moulin | 2019-05-27 | 2 | |
| | | | | Also, accept comma-separated values for --target. | ||||
* | interimap: fail when two non-INBOX LIST replies return different separators. | Guilhem Moulin | 2019-05-27 | 2 | |
| | | | | | | This never happens for a single LIST command, but may happen if mailboxes from different namespaces are being listed. The workaround here is to run a new interimap instance for each namespace. | ||||
* | interimap: accept C-style escape sequences in 'list-mailbox'. | Guilhem Moulin | 2019-05-27 | 3 | |
| | | | | | This is useful for defining names containing control characters (incl. \0 for unspecified hierarchy delimiter). | ||||
* | interimap: Factor out error throwing. | Guilhem Moulin | 2019-05-27 | 2 | |
| | | | | Also, write which --target to use in --delete command suggestions. | ||||
* | libinterimap: astring is 1*ASTRING-CHAR / string. | Guilhem Moulin | 2019-05-27 | 2 | |
| | | | | | | | | | | | | | | | 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 Moulin | 2019-05-27 | 2 | |
| | | | | | 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 Moulin | 2019-05-27 | 4 | |
| | | | | | The were returned as escaped quoted specials, like "\\", not as a single character (backslash in this case). | ||||
* | wibble | Guilhem Moulin | 2019-05-26 | 3 | |
| | |||||
* | Prepare new release.upstream/0.4 | Guilhem Moulin | 2019-01-22 | 1 | |
| | |||||
* | Bump copyright years. | Guilhem Moulin | 2019-01-22 | 4 | |
| | |||||
* | Bump version number. | Guilhem Moulin | 2019-01-22 | 3 | |
| | |||||
* | Change e-mail address. | Guilhem Moulin | 2019-01-22 | 1 | |
| | |||||
* | Net::IMAP::InterIMAP: add support for TLSv1.3 (on recent enough Net::SSLeay). | Guilhem Moulin | 2019-01-22 | 4 | |
| | | | | | | | 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/ . | ||||
* | pullimap, interimap: don't autocreate statefile or database in long-lived mode. | Guilhem Moulin | 2019-01-21 | 3 | |
| | |||||
* | interimap.service: use --watch=60 rather than --notify. | Guilhem Moulin | 2019-01-20 | 3 | |
| | |||||
* | Note on migrations. | Guilhem Moulin | 2019-01-20 | 4 | |
| | |||||
* | Specify minimum Perl and Net::SSLeay versions. | Guilhem Moulin | 2019-01-20 | 5 | |
| | |||||
* | pullimap, interimap: Use $XDG_CONFIG_HOME/$NAME/config as config file. | Guilhem Moulin | 2019-01-20 | 7 | |
| | |||||
* | typofix | Guilhem Moulin | 2018-05-10 | 1 | |
| | |||||
* | pullimap: use extended SEARCH (RFC 4731) when available | Guilhem Moulin | 2018-05-10 | 3 | |
| | |||||
* | Improve ESEARCH response parsing for full RFC 4466 compatibility. | Guilhem Moulin | 2018-05-10 | 1 | |
| | |||||
* | Improve wording. | Guilhem Moulin | 2018-05-09 | 1 | |
| | |||||
* | typofix | Guilhem Moulin | 2018-05-09 | 1 | |
| | |||||
* | Fix uninitialized value $set in quotemeta | Guilhem Moulin | 2018-05-09 | 1 | |
| | |||||
* | Add support for untagged ESEARCH responses from RFC 4731. | Guilhem Moulin | 2018-05-09 | 2 | |
| | |||||
* | Library: new API idle_start() and idle_stop(). | Guilhem Moulin | 2018-05-09 | 2 | |
| | |||||
* | Fix manpage generation with pandoc >=2.1 | Guilhem Moulin | 2018-04-26 | 2 | |
| | |||||
* | Add missing changelog entry. | Guilhem Moulin | 2017-07-29 | 1 | |
| | |||||
* | Fix manpage generation with pandoc >=1.18. | Guilhem Moulin | 2017-07-29 | 1 | |
| | |||||
* | Ensure the lower bound of UID ranges is at least 1. | Guilhem Moulin | 2017-05-29 | 2 | |
| | |||||
* | Minor manpage fixes. | Guilhem Moulin | 2016-12-06 | 1 | |
| | |||||
* | pullimap: replace non RFC 5321-compliant envelope sender addresses by <>. | Guilhem Moulin | 2016-12-06 | 3 | |
| | |||||
* | interimap.service: s/--watch/--notify/.upstream/0.3 | Guilhem Moulin | 2016-12-01 | 1 | |
| | |||||
* | Update changelog. | Guilhem Moulin | 2016-12-01 | 1 | |
| | |||||
* | wibble | Guilhem Moulin | 2016-12-01 | 2 | |
| | |||||
* | "fingerprint" now only pins the cert's SPKI, not the cert itself. | Guilhem Moulin | 2016-12-01 | 3 | |
| | |||||
* | bugfix: when resuming a sync, only consider UIDs greater than a known UIDNEXT. | Guilhem Moulin | 2016-11-22 | 1 | |
| | |||||
* | wibble | Guilhem Moulin | 2016-11-22 | 1 | |
| | |||||
* | wibble | Guilhem Moulin | 2016-06-25 | 1 | |
| | |||||
* | pullimap: quote the local part if need be (cf. RFC 5321). | Guilhem Moulin | 2016-06-25 | 2 | |
| | |||||
* | wibble | Guilhem Moulin | 2016-06-13 | 1 | |
| | |||||
* | pullimap: enable locally unsetting the 'purge-after' option. | Guilhem Moulin | 2016-06-12 | 1 | |
| | |||||
* | pullimap: Clean up PATH. | Guilhem Moulin | 2016-06-12 | 2 | |
| | |||||
* | pullimap: precise that the mailbox needs to be UTF-7 encoded and unquoted. | Guilhem Moulin | 2016-03-13 | 1 | |
| | |||||
* | pullimap: fix struct flock packing | Guilhem Moulin | 2016-03-13 | 1 | |
| | |||||
* | interimap: reformulation in manpage | Guilhem Moulin | 2016-03-13 | 1 | |
| |