]> code.delx.au - offlineimap/commitdiff
/offlineimap/head: changeset 445
authorjgoerzen <jgoerzen>
Fri, 18 Apr 2003 04:31:25 +0000 (05:31 +0100)
committerjgoerzen <jgoerzen>
Fri, 18 Apr 2003 04:31:25 +0000 (05:31 +0100)
- Now checks that SELECT succeeded when entering a folder.

- Verifies that folders listed on folderincludes actually exist by
  trying to enter them. Thus, if they do not exist, they can be
  created on the first run.

offlineimap/head/debian/changelog
offlineimap/head/offlineimap/folder/IMAP.py
offlineimap/head/offlineimap/repository/IMAP.py

index 34ab3d24708f7783ec3b0f44552e4c4cc72cc4ad..db488385b34bee49046541e2fb51f72fbff9997f 100644 (file)
@@ -4,6 +4,10 @@ offlineimap (3.99.13) unstable; urgency=low
   * Fixed line-ending code to deal with files with mixed \n and \r\n
     codes.  This is a rare case, but now is more onerous because we now
     have to find headers.
+  * Now checks that SELECT succeeded when entering a folder.
+  * Verifies that folders listed on folderincludes actually exist by trying
+    to enter them.  Thus, if they do not exist, they can be created on the
+    first run.
 
  -- John Goerzen <jgoerzen@complete.org>  Thu, 17 Apr 2003 18:02:13 -0500
 
index 34b4508c3538834dc786b7c82e5b6b4ea5488218..3a86dab6c0b47ad7476b177caebf10aaf9574bac 100644 (file)
@@ -69,7 +69,7 @@ class IMAPFolder(BaseFolder):
 
         try:
             # Primes untagged_responses
-            imapobj.select(self.getfullname(), readonly = 1)
+            assert(imapobj.select(self.getfullname(), readonly = 1)[0] == 'OK')
             try:
                 # Some mail servers do not return an EXISTS response if
                 # the folder is empty.
index 7ff24e8d4ee50ec978b5ac81fcf44cb8c50167bb..26fec391d8d87d617357758eb851af905eba061f 100644 (file)
@@ -153,10 +153,18 @@ class IMAPRepository(BaseRepository):
             retval.append(self.getfoldertype()(self.imapserver, foldername,
                                                self.nametrans(foldername),
                                                self.accountname, self))
-        for foldername in self.folderincludes:
-            retval.append(self.getfoldertype()(self.imapserver, foldername,
-                                               self.nametrans(foldername),
-                                               self.accountname, self))
+        if len(self.folderincludes):
+            imapobj = self.imapserver.acquireconnection()
+            try:
+                for foldername in self.folderincludes:
+                    if imapobj.select(foldername, readonly = 1)[0] == 'OK':
+                        retval.append(self.getfoldertype()(self.imapserver,
+                                                           foldername,
+                                                           self.nametrans(foldername),
+                                                           self.accountname, self))
+            finally:
+                self.imapserver.releaseconnection(imapobj)
+                
         retval.sort(lambda x, y: self.foldersort(x.getvisiblename(), y.getvisiblename()))
         self.folders = retval
         return retval