update TODO

remove items:
- the "Unidentified socket error" should be gone since 7ba7be111
- imap_commit_cmds() is implemented since cfaa4848d
- we will never use MULTIAPPEND and FETCH BODY with multiple messages,
  as that would significantly complicate matters for no tangible benefit

... and add some new thoughts.

the idea to use strings of colons for quoting patterns doesn't work, as
colons in "regular" patterns could not be quoted.
This commit is contained in:
Oswald Buddenhagen 2021-12-24 12:56:02 +01:00
parent 7619705428
commit 21c8529383

22
TODO
View File

@ -1,7 +1,5 @@
f{,data}sync() usage could be optimized by batching the calls. f{,data}sync() usage could be optimized by batching the calls.
make SSL (connect) timeouts produce a bit more than "Unidentified socket error".
automatically resume upon transient errors, e.g. "connection reset by peer" automatically resume upon transient errors, e.g. "connection reset by peer"
or timeout after some data was already transmitted. or timeout after some data was already transmitted.
possibly also try to handle Exchange's "glitches" somehow. possibly also try to handle Exchange's "glitches" somehow.
@ -10,11 +8,16 @@ uidvalidity lock timeout handling would be a good idea.
should complain when multiple Channels match the same folders. should complain when multiple Channels match the same folders.
should complain about nonsensical combinations like Sync Pull + Create Both.
propagate folder deletions even when the folders are non-empty. propagate folder deletions even when the folders are non-empty.
- verify that "most" of the folders in the Channel are still there. - verify that "most" of the folders in the Channel are still there.
- refuse to delete unpropagated messages when trashing on the remote side. - refuse to delete unpropagated messages when trashing on the remote side.
- refuse to delete far side if it has unpropagated messages. symmetry? - refuse to delete far side if it has unpropagated messages. symmetry?
add option to suppress complaints about folders that would need creation
(but not deleted ones).
add message expiration based on arrival date (message date would be too add message expiration based on arrival date (message date would be too
unreliable). MaxAge; probably mutually exclusive to MaxMessages. unreliable). MaxAge; probably mutually exclusive to MaxMessages.
@ -27,11 +30,12 @@ add support for event notification callbacks.
make it possible to have different mailbox names for far and near side in make it possible to have different mailbox names for far and near side in
Patterns. Patterns.
- use far:near for the pattern - use far:near for the pattern
- for quoting, use more colons: the longest sequence of colons is the - supporting names with colons requires and extension of the parser to
separator report which parts of an argument were quoted
- this makes Groups mostly useless, as they are mostly a workaround for this - this makes Groups mostly useless, as they are mostly a workaround for this
function being missing so far function being missing so far
- this is needed for move detection, which would work only within one Channel - this is needed for move detection, which would work only within one Channel
- this supersedes MapInbox
add regexp-based mailbox path rewriting to the drivers. user would provide add regexp-based mailbox path rewriting to the drivers. user would provide
expressions for both directions. every transformation would be immediately expressions for both directions. every transformation would be immediately
@ -44,18 +48,22 @@ also: idling mode.
parallel fetching of multiple mailboxes. parallel fetching of multiple mailboxes.
TLS session resumption becomes interesting then as well. TLS session resumption becomes interesting then as well.
imap_set_flags(): group commands for efficiency, don't call back until imap_set_msg_flags() & imap_trash_msg(): group commands for efficiency.
imap_commit().
add streaming from fetching to storing. add streaming from fetching to storing.
this is complicated by the IMAP target needing the final size in advance,
which we can't know in a single pass when newline translation is necessary.
handle custom flags (keywords). handle custom flags (keywords).
this is impeded by there being no Maildir-side standard.
make use of IMAP CONDSTORE extension (rfc4551; CHANGEDSINCE FETCH Modifier); make use of IMAP CONDSTORE extension (rfc4551; CHANGEDSINCE FETCH Modifier);
make use of IMAP QRESYNC extension (rfc5162) to avoid SEARCH to find vanished make use of IMAP QRESYNC extension (rfc5162) to avoid SEARCH to find vanished
messages. messages.
use MULTIAPPEND and FETCH with multiple messages. make use of IMAP CAPABILITY APPENDLIMIT= extension (rfc7889; fastmail & gmail).
this is really useful only for IMAP <=> IMAP syncs: saves FETCH BODY.
the message could still become oversized due to conversion.
dummy messages resulting from MaxSize should contain a dump of the original dummy messages resulting from MaxSize should contain a dump of the original
message's MIME structure and its (reasonably sized) text parts. message's MIME structure and its (reasonably sized) text parts.