[PATCH 0/6] Re: Readd idle again
nicolas.s-dev at laposte.net
Thu May 19 20:35:04 BST 2011
On Thu, May 19, 2011 at 03:02:25PM -0400, Ethan Glasser-Camp wrote:
> Hi guys,
> Please find the followign six patches to readd IDLE, which are the
> same as yesterday but with minor changes and clarifications to respond
> to Nicholas's criticism. I guess if I were really slick I'd only send
> updated patches, but I'm not that slick :) Anyone want to provide
> - remove unneeded time import (patch 3)
> - warn if IDLE is not supported by server (patch 4)
> - rename variables so as to clarify imaplib2's "error" callback (patch 6)
> - put the comment warning that we can't do a NOOP on a bad connection
> before the if checking for a bad connection for clarity (patch 6)
> - document shortcomings of IDLE and mark it as EXPERIMENTAL
> in offlineimap.conf (patch 1)
I'm missing the interdiff. I created it this time:
diff --git a/docs/MANUAL.rst b/docs/MANUAL.rst
index 62b0d3b..26f31a6 100644
@@ -288,6 +288,17 @@ KNOWN BUGS
last stable version and send us a report to the mailing list including the
+* IDLE support is incomplete and experimental. Bugs may be encountered.
+ * No hook exists for "run after an IDLE response". Email will
+ show up, but may not be processed until the next refresh cycle.
+ * nametrans may not be supported correctly.
+ * IMAP IDLE <-> IMAP IDLE doesn't work yet.
+ * IDLE may only work "once" per refresh. If you encounter this bug,
+ please send a report to the list!
diff --git a/offlineimap.conf b/offlineimap.conf
index 39cded6..9329c66 100644
@@ -372,6 +372,10 @@ remoteuser = username
# maxconnections - to be at least the number of folders you give
# holdconnectionopen - to be true
# keepalive - to be 29 minutes unless you specify otherwise
+# This feature isn't complete and may well have problems. BE AWARE THIS
+# IS EXPERIMENTAL STUFF. See the manual for more details.
# This option should return a Python list. For example
# idlefolders = ['INBOX', 'INBOX.Alerts']
diff --git a/offlineimap/imapserver.py b/offlineimap/imapserver.py
index b24f355..37d80f0 100644
@@ -21,7 +21,6 @@ from offlineimap.ui import getglobalui
from threading import Lock, BoundedSemaphore, Thread, Event, currentThread
from thread import get_ident # python < 2.6 support
@@ -408,7 +407,8 @@ class IdleThread(object):
self.needsync = False
self.imapaborted = False
- if args is None:
+ result, cb_arg, exc_data = args
+ if exc_data is None:
if not self.event.isSet():
self.needsync = True
@@ -422,11 +422,14 @@ class IdleThread(object):
if "IDLE" in imapobj.capabilities:
+ self.ui = getglobalui()
+ ui.warn("IMAP IDLE not supported on connection to %s; falling back to no-op"
+ # Can't NOOP on a bad connection.
if not self.imapaborted:
- # Can't NOOP on a bad connection.
# We don't do event.clear() so that we'll fall out
# of the loop next time around.
> Once again, I hope you can apply this :)
More information about the OfflineIMAP-project