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 <nicolas.s-dev@laposte.net>
This commit is contained in:
Nicolas Sebrecht 2016-08-02 20:53:30 +02:00
parent c7434ea46c
commit cbd1a8929a
2 changed files with 11 additions and 7 deletions

View File

@ -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.

View File

@ -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