[PATCH] Fix caching inconsistencies in getselectedfolder()

Sebastian Spaeth Sebastian at SSpaeth.de
Wed Jul 6 22:15:33 BST 2011

getselectedfolder was using a cached variable that we were setting in
select(), but sometimes the IMAP4 instance got into the SELECTED state
without explicitely select()ing, it seems, and our variable was unset.

Let us just use the self.mailbox variable that imaplib2 is setting when
select()ing rather than doing our own caching. Also remove the part
where we were setting the cache.

Just access self.state rather than looking up self.state via
self.getstate() every time, it is just an unnecessary layer of

Signed-off-by: Sebastian Spaeth <Sebastian at SSpaeth.de>
In addition to Arnaud's patch, this also removes the part where we were
setting the unneeded cached variable.

 offlineimap/imaplibutil.py |   10 ++--------
 1 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/offlineimap/imaplibutil.py b/offlineimap/imaplibutil.py
index 20ab336..6492086 100644
--- a/offlineimap/imaplibutil.py
+++ b/offlineimap/imaplibutil.py
@@ -33,11 +33,9 @@ except ImportError:
 class UsefulIMAPMixIn:
-    def getstate(self):
-        return self.state
     def getselectedfolder(self):
-        if self.getstate() == 'SELECTED':
-            return self.selectedfolder
+        if self.state == 'SELECTED':
+            return self.mailbox
         return None
     def select(self, mailbox='INBOX', readonly=None, force = 0):
@@ -58,10 +56,6 @@ class UsefulIMAPMixIn:
                 (mailbox, result)
             severity = OfflineImapError.ERROR.FOLDER
             raise OfflineImapError(errstr, severity) 
-        if self.getstate() == 'SELECTED':
-            self.selectedfolder = mailbox
-        else:
-            self.selectedfolder = None
         return result
     def _mesg(self, s, tn=None, secs=None):

More information about the OfflineIMAP-project mailing list