summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2013-12-20 16:36:21 -0400
committerKali Kaneko <kali@leap.se>2013-12-20 16:36:39 -0400
commit90b3bdd9b7cee630defdba57eb178c881e3b1984 (patch)
treec50246a14c17eab9ddde77b507fb011f6ba7f6e5
parent81f9513ea4bef7828aed71afeb018a79bc3f1480 (diff)
safety catch against wrong last_uid
-rw-r--r--mail/src/leap/mail/imap/server.py17
1 files changed, 16 insertions, 1 deletions
diff --git a/mail/src/leap/mail/imap/server.py b/mail/src/leap/mail/imap/server.py
index f77bf2c..d92ab9d 100644
--- a/mail/src/leap/mail/imap/server.py
+++ b/mail/src/leap/mail/imap/server.py
@@ -1430,7 +1430,22 @@ class SoledadMailbox(WithMsgFields):
leap_assert(isinstance(uid, int), "uid has to be int")
mbox = self._get_mbox()
key = self.LAST_UID_KEY
- mbox.content[key] = uid
+
+ count = mbox.getMessageCount()
+
+ # XXX safety-catch. If we do get duplicates,
+ # we want to avoid further duplication.
+
+ if uid >= count:
+ value = uid
+ else:
+ # something is wrong,
+ # just set the last uid
+ # beyond the max msg count.
+ logger.debug("WRONG uid < count. Setting last uid to ", count)
+ value = count
+
+ mbox.content[key] = value
self._soledad.put_doc(mbox)
last_uid = property(