Handle when UID can't be found on saved messages
Message was stored to dstfolder, but we can't find it's UID. This means we can't
link current message to the one created in IMAP. So we just delete local message
and on next run we'll sync it back. Also fixed imap.savemessage description.
This was broken by e20d8b9679
.
Signed-off-by: Vladimir Marek <vlmarek@volny.cz>
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
This commit is contained in:
parent
86e9c7442b
commit
d5cbdc4c0e
@ -264,6 +264,14 @@ class BaseFolder(object):
|
||||
uid = newuid
|
||||
# Save uploaded status in the statusfolder
|
||||
statusfolder.savemessage(uid, message, flags, rtime)
|
||||
elif newuid == 0:
|
||||
# Message was stored to dstfolder, but we can't find it's UID
|
||||
# This means we can't link current message to the one created
|
||||
# in IMAP. So we just delete local message and on next run
|
||||
# we'll sync it back
|
||||
# XXX This could cause infinite loop on syncing between two
|
||||
# IMAP servers ...
|
||||
self.deletemessage(uid)
|
||||
else:
|
||||
raise UserWarning("Trying to save msg (uid %d) on folder "
|
||||
"%s returned invalid uid %d" % \
|
||||
|
@ -409,8 +409,10 @@ class IMAPFolder(BaseFolder):
|
||||
the new message after sucessfully saving it.
|
||||
|
||||
:param rtime: A timestamp to be used as the mail date
|
||||
:returns: the UID of the new message as assigned by the
|
||||
server. If the folder is read-only it will return 0."""
|
||||
:returns: the UID of the new message as assigned by the server. If the
|
||||
message is saved, but it's UID can not be found, it will
|
||||
return 0. If the message can't be written (folder is
|
||||
read-only for example) it will return -1."""
|
||||
self.ui.debug('imap', 'savemessage: called')
|
||||
|
||||
# already have it, just save modified flags
|
||||
|
Loading…
Reference in New Issue
Block a user