diff options
author | Kali Kaneko <kali@leap.se> | 2015-05-21 12:47:27 -0400 |
---|---|---|
committer | Kali Kaneko <kali@leap.se> | 2015-06-05 16:50:39 -0400 |
commit | 8915db2e1c1a339cf36ae0e28da627bb1a8e040e (patch) | |
tree | ffd353c03380b022731265c672f5cec6d017e4e2 /src/leap/mail/imap | |
parent | d5d9c3794566b999bfd42398072c9f7e3177d1b9 (diff) |
[feature] post-sync mail processing hooks
using the new soledad plugin capablity, mail hooks to the post-sync
event by subscribing to the Meta-Doc type of documents. In this way, we
can create the uid tables and the uid entries needed to keep local
indexes for mail that has been processed in another instance.
however, this won't prevent a conflict if a given mail is received and
processed in two different instances. that is a problem that we still
have to deal with.
Resolves: #6996
Releases: 0.4.0
Diffstat (limited to 'src/leap/mail/imap')
-rw-r--r-- | src/leap/mail/imap/service/imap.py | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/leap/mail/imap/service/imap.py b/src/leap/mail/imap/service/imap.py index 370c513..e401283 100644 --- a/src/leap/mail/imap/service/imap.py +++ b/src/leap/mail/imap/service/imap.py @@ -35,6 +35,7 @@ from leap.common.events import emit, catalog from leap.common.check import leap_assert_type, leap_check from leap.mail.imap.account import IMAPAccount from leap.mail.imap.server import LEAPIMAPServer +from leap.mail.plugins import soledad_sync_hooks from leap.soledad.client import Soledad @@ -91,10 +92,17 @@ class LeapIMAPFactory(ServerFactory): theAccount = IMAPAccount(uuid, soledad) self.theAccount = theAccount + self._initialize_sync_hooks() self._connections = defaultdict() # XXX how to pass the store along? + def _initialize_sync_hooks(self): + soledad_sync_hooks.post_sync_uid_reindexer.set_account(self.theAccount) + + def _teardown_sync_hooks(self): + soledad_sync_hooks.post_sync_uid_reindexer.set_account(None) + def buildProtocol(self, addr): """ Return a protocol suitable for the job. @@ -128,6 +136,7 @@ class LeapIMAPFactory(ServerFactory): # mark account as unusable, so any imap command will fail # with unauth state. self.theAccount.end_session() + self._teardown_sync_hooks() # TODO should wait for all the pending deferreds, # the twisted way! |