summaryrefslogtreecommitdiff
path: root/src/leap/mail/mail.py
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2015-03-23 13:08:24 -0400
committerKali Kaneko <kali@leap.se>2015-03-30 14:48:14 -0400
commitd11c03d1126f1744789d107b0f9bd04fc8a2f50b (patch)
tree654c961893321ea67be60d187a5746e17e97d209 /src/leap/mail/mail.py
parent30ffa594249960da99d299b77f007ebc20072fbc (diff)
[bug] move creation_ts to mail generic api
This also fixes a bug in which INBOX wasn't being given a creation timestamp, and therefore always being identified with the same UIDVALIDITY = 1, which could be confusing MUAs since this value should be unique, and it's relied on to uniquely identifying a given message. Releases: 0.4.0
Diffstat (limited to 'src/leap/mail/mail.py')
-rw-r--r--src/leap/mail/mail.py17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/leap/mail/mail.py b/src/leap/mail/mail.py
index 99c3873..89f89b0 100644
--- a/src/leap/mail/mail.py
+++ b/src/leap/mail/mail.py
@@ -21,6 +21,7 @@ import itertools
import uuid
import logging
import StringIO
+import time
import weakref
from twisted.internet import defer
@@ -833,7 +834,20 @@ class Account(object):
d = self.adaptor.get_all_mboxes(self.store)
return d
- def add_mailbox(self, name):
+ def add_mailbox(self, name, creation_ts=None):
+
+ if creation_ts is None:
+ # by default, we pass an int value
+ # taken from the current time
+ # we make sure to take enough decimals to get a unique
+ # mailbox-uidvalidity.
+ creation_ts = int(time.time() * 10E2)
+
+ def set_creation_ts(wrapper):
+ wrapper.created = creation_ts
+ d = wrapper.update(self.store)
+ d.addCallback(lambda _: wrapper)
+ return d
def create_uuid(wrapper):
if not wrapper.uuid:
@@ -849,6 +863,7 @@ class Account(object):
return d
d = self.adaptor.get_or_create_mbox(self.store, name)
+ d.addCallback(set_creation_ts)
d.addCallback(create_uuid)
d.addCallback(create_uid_table_cb)
return d