John Goerzen [Wed, 1 Mar 2006 23:12:29 +0000 (00:12 +0100)]
New restoreatime patch
From: Ben Kibbey <bjk@luxsci.net>
Attached is a patch to restore the atime of Maildir folders after
syncing. It can be enabled via the 'restoreatime' boolean in the
configuration file. I needed this because offlineimap is run after a
fetchmail and my mail checker breaks.
John Goerzen [Wed, 24 Aug 2005 18:01:42 +0000 (19:01 +0100)]
[324827] Fixed handling of invalid dates
Patch from Nikita V. Youshchenko
From: "Nikita V. Youshchenko"
To: Debian Bug Tracking System
Subject: offlineimap: exception on mail with broken headers (+fix)
Date: Wed, 24 Aug 2005 13:41:08 +0400
Package: offlineimap
Version: 4.0.10
Severity: normal
Tags: patch
Recently I've got an exception (see below) while using offlineimap.
Exception was probably caused by invalid Date header of (likely spam)
message:
Date: Sat, 20 Aug 2005 4294967295:43:18 -0700
John Goerzen [Tue, 23 Aug 2005 07:15:09 +0000 (08:15 +0100)]
[319117] Unroll loop to speed performance on large folders
From: "Nikita V. Youshchenko"
I trued to use offlineimap and found that while being quite fast on
small folders, it takes up to several minutes (of 100% busy CPU and
almost no network traffic) to sync a folder with 2000+ messages.
While looking into the code, I found why this happens.
In folder/Base.py, in method BaseFolder.syncmessagesto_copy(),
dest.getmessagelist() is called inside a loop, while being a loop
invariant. Similar thing happens in BaseFolder.syncmessagesto_delete()
for self.getmessagelist().
This causes quadratic complexity over folder size.
Moving these calls out of loops make large folder sync fast (several
seconds instead of several minutes for folder with 2000 messages on
700MHz P3).
jgoerzen [Thu, 26 Jun 2003 23:28:54 +0000 (00:28 +0100)]
/offlineimap/head: changeset 485
Applied patch from Joerg Wendland <joergland@debian.org> to use
APPENDUID result from mail servers that provide it. Closes: #198772.
Resolves: [debian.org #198772]
jgoerzen [Mon, 2 Jun 2003 21:17:29 +0000 (22:17 +0100)]
/offlineimap/head: changeset 484
Added a "force" option to imapserver/select to force a reloading of a
folder. Per [complete.org #67], when cachemessagelist() was called on
an object that was cached from a previous run, it would not re-issue
the select(). Closes: [complete.org #67]
jgoerzen [Mon, 2 Jun 2003 19:06:18 +0000 (20:06 +0100)]
/offlineimap/head: changeset 478
Added -l option. Updated documentation for it. Changed _msg to
_display override in UI modules. Renamed "doc" to "docs" target in
Makefile to avoid conflicting with a subdir.
jgoerzen [Tue, 6 May 2003 19:26:12 +0000 (20:26 +0100)]
/offlineimap/head: changeset 474
- offlineimap (3.99.17) unstable; urgency=low
- Fixed two potential obscure race conditions in folder/Maildir.py. +
Condition 1 involved the gettimeseq() function. This function
accesses per-module variables but does not have a lock. It may have
been possible for this to have been called in such a way that
timeseq was not properly updated. + Condition 2 involved the call to
gettimeseq(). Since the timeseq is based on the system clock, we now
use the time as reported inside timeseq() rather than outside. This
way, we can be assured that the same value is in use both places.
- Added debug code to savemessage in folder/Maildir.py to try to track
down a mysterious 0-length file bug. -- John Goerzen
<jgoerzen@complete.org> Tue, 6 May 2003 09:21:38 -0500
jgoerzen [Tue, 6 May 2003 18:41:13 +0000 (19:41 +0100)]
/offlineimap/head: changeset 471
- Added some significant debug code to folder/IMAP.py when saving a
new message with APPEND. This should make it easier to track down
bugs both in OfflineIMAP and in mail servers that implement this
poorly.
- Fixed adding of X-OfflineIMAP header when the message starts out
with no headers. (This should not generally occur.) This should help
with some "invalid literal for long()" problems.
When sep was /, the new Maildir support code would recursively try to
scan ., resulting in huge paths and an eventual crash. Fixed with a
one-line patch to Maildir.py. Closes: [complete.org #60] Sergei, The
below diff is going into 3.99.16. You can apply it to 3.99.15 and it
should work for you now. Please let me know. (Ignore any patch errors
for debian/changelog). Thanks for the report.