From cbd1a8929a2272e35a1dd038a9d0b32fcbd982c9 Mon Sep 17 00:00:00 2001 From: Nicolas Sebrecht Date: Tue, 2 Aug 2016 20:53:30 +0200 Subject: [PATCH] folder: IMAP: change raw assert to OfflineImapError There is not reason to block remainings actions on first error on UID STORE. Signed-off-by: Nicolas Sebrecht --- offlineimap/folder/Base.py | 5 +++-- offlineimap/folder/IMAP.py | 13 ++++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/offlineimap/folder/Base.py b/offlineimap/folder/Base.py index 8cc22df..b691c54 100644 --- a/offlineimap/folder/Base.py +++ b/offlineimap/folder/Base.py @@ -1092,9 +1092,10 @@ class BaseFolder(object): except OfflineImapError as e: if e.severity > OfflineImapError.ERROR.FOLDER: raise - self.ui.error(e, exc_info()[2]) + self.ui.error(e, exc_info()[2], "while syncing %s [account %s]"% + (self, self.accountname)) except Exception as e: - self.ui.error(e, exc_info()[2], "Syncing folder %s [acc: %s]"% + self.ui.error(e, exc_info()[2], "while syncing %s [account %s]"% (self, self.accountname)) raise # Raise unknown Exceptions so we can fix them. diff --git a/offlineimap/folder/IMAP.py b/offlineimap/folder/IMAP.py index 4093fa0..edc2735 100644 --- a/offlineimap/folder/IMAP.py +++ b/offlineimap/folder/IMAP.py @@ -832,19 +832,22 @@ class IMAPFolder(BaseFolder): except imapobj.readonly: self.ui.flagstoreadonly(self, uidlist, flags) return - r = imapobj.uid('store', + response = imapobj.uid('store', imaputil.uid_sequence(uidlist), operation + 'FLAGS', imaputil.flagsmaildir2imap(flags)) - assert r[0] == 'OK', 'Error with store: ' + '. '.join(r[1]) - r = r[1] + if response[0] != 'OK': + raise OfflineImapError( + 'Error with store: %s'% '. '.join(response[1]), + OfflineImapError.ERROR.MESSAGE) + response = response[1] finally: self.imapserver.releaseconnection(imapobj) # Some IMAP servers do not always return a result. Therefore, # only update the ones that it talks about, and manually fix # the others. needupdate = list(uidlist) - for result in r: - if result == None: + for result in response: + if result is None: # Compensate for servers that don't return anything from # STORE. continue