3eee821382
The previous syncing strategy was doing more than we needed to and was a bit underdocumented. This is an attempt to clean it up. 1) Do away with the previous different code paths depending on whether there is a LocalStatus file or not (the isnewfolder() test). We always use the same strategy now, which makes the strategy easier to understand. This strategy is simply: a) Sync remote to local folder first b) Sync local to remote Where each sync implies a 4 pass strategy which does basically the same as before (explained below). 2) Don't delete messages on LOCAL which don't exist on REMOTE right at the beginning anymore. This prevented us e.g. from keeping local messages rather than redownloading everything once LocalStatus got corrupted or deleted. This surprised many who put in an existing local maildir and expected it to be synced to the remote place. Instead, the local maildir was deleted. This is a data loss that actually occured to people! 3) No need to separately sync the statusfolder, we update that one simultanously with the destfolders... 3) Simplified the sync function API by only taking one destdir rather than a list of destdirs, we never used more anyway. This makes the code easier to read. 4) Added plenty of code comments while I was going through to make sure the strategy is easy to understand. ----------------------------------------- Pass1: Transfer new local messages Upload msg with negative/no UIDs to dstfolder. dstfolder should assign that message a new UID. Update statusfolder. Pass2: Copy existing messages Copy messages in self, but not statusfolder to dstfolder if not already in dstfolder. Update statusfolder. Pass3: Remove deleted messages Get all UIDS in statusfolder but not self. These are messages that we have locally deleted. Delete those from dstfolder and statusfolder. Pass4: Synchronize flag changes Compare flags in self with those in statusfolder. If msg has a valid UID and exists on dstfolder (has not e.g. been deleted there), sync the flag change to dstfolder and statusfolder. The user visible implications of this change should be unnoticable except in one situation: Blowing away LocalStatus will not require you to redownload ALL of your mails if you still have the local Maildir. It will simply recreate LocalStatus. Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de> Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
54 lines
1.4 KiB
ReStructuredText
54 lines
1.4 KiB
ReStructuredText
=========
|
|
ChangeLog
|
|
=========
|
|
|
|
Users should ignore this content: **it is draft**.
|
|
|
|
Contributors should add entries here in the following section, on top of the
|
|
others.
|
|
|
|
`WIP (coming releases)`
|
|
=======================
|
|
|
|
New Features
|
|
------------
|
|
* Implement UIDPLUS extension support. OfflineIMAP will now not insert
|
|
an X-OfflineIMAP header if the mail server supports the UIDPLUS
|
|
extension.
|
|
* SSL: support subjectAltName.
|
|
|
|
Changes
|
|
-------
|
|
|
|
* Makefile use magic to find the version number.
|
|
* Rework the repository module
|
|
* Change UI names to Blinkenlights,TTYUI,Basic,Quiet,MachineUI.
|
|
Old names will still work, but are deprecated.
|
|
Document that we don't accept a list of UIs anymore.
|
|
* Reworked the syncing strategy. The only user-visible change is that
|
|
blowing away LocalStatus will not require you to redownload ALL of
|
|
your mails if you still have the local Maildir. It will simply
|
|
recreate LocalStatus.
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
* Allow SSL connections to send keep-alive messages.
|
|
* Fix regression (UIBase is no more).
|
|
* Make profiling mode really enforce single-threading
|
|
* Do not send localized date strings to the IMAP server as it will
|
|
either ignore or refuse them.
|
|
|
|
Pending for the next major release
|
|
==================================
|
|
|
|
* UIs get shorter and nicer names. (API changing)
|
|
|
|
|
|
Stalled
|
|
=======
|
|
|
|
* Learn Sqlite support.
|
|
Stalled: it would need to learn the ability to choose between the current
|
|
format and SQL to help testing the long term.
|