From 9e8ca28f060362e1540deb87153fde4161d39161 Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Sun, 19 Jul 2015 02:24:43 +0200 Subject: fixes mail fetcher --- service/pixelated/bitmask_libraries/config.py | 2 -- service/pixelated/bitmask_libraries/nicknym.py | 2 +- service/pixelated/bitmask_libraries/session.py | 27 ++++++++++++++++---------- service/pixelated/bitmask_libraries/soledad.py | 3 +-- 4 files changed, 19 insertions(+), 15 deletions(-) (limited to 'service/pixelated/bitmask_libraries') diff --git a/service/pixelated/bitmask_libraries/config.py b/service/pixelated/bitmask_libraries/config.py index efb43411..c521a093 100644 --- a/service/pixelated/bitmask_libraries/config.py +++ b/service/pixelated/bitmask_libraries/config.py @@ -36,7 +36,6 @@ class LeapConfig(object): def __init__(self, leap_home=None, - fetch_interval_in_s=30, timeout_in_s=15, start_background_jobs=False, gpg_binary=discover_gpg_binary()): @@ -45,4 +44,3 @@ class LeapConfig(object): self.timeout_in_s = timeout_in_s self.start_background_jobs = start_background_jobs self.gpg_binary = gpg_binary - self.fetch_interval_in_s = fetch_interval_in_s diff --git a/service/pixelated/bitmask_libraries/nicknym.py b/service/pixelated/bitmask_libraries/nicknym.py index c9db32c6..ecd928cc 100644 --- a/service/pixelated/bitmask_libraries/nicknym.py +++ b/service/pixelated/bitmask_libraries/nicknym.py @@ -39,7 +39,7 @@ class NickNym(object): @defer.inlineCallbacks def _key_exists(self, email): try: - yield self.keymanager.get_key(email, openpgp.OpenPGPKey) + yield self.keymanager.get_key(email, openpgp.OpenPGPKey, private=True, fetch_remote=False) defer.returnValue(True) except KeyNotFound: defer.returnValue(False) diff --git a/service/pixelated/bitmask_libraries/session.py b/service/pixelated/bitmask_libraries/session.py index 60084731..d1bdac73 100644 --- a/service/pixelated/bitmask_libraries/session.py +++ b/service/pixelated/bitmask_libraries/session.py @@ -61,10 +61,12 @@ class LeapSession(object): self.nicknym = nicknym self.account = soledad_account self.incoming_mail_fetcher = incoming_mail_fetcher - self.nicknym.generate_openpgp_key() + + d = self.sync() + d.addCallback(lambda _: self.nicknym.generate_openpgp_key()) if self.config.start_background_jobs: - self.start_background_jobs() + d.addCallback(lambda _: self.start_background_jobs()) def account_email(self): name = self.user_auth.username @@ -73,7 +75,9 @@ class LeapSession(object): def close(self): self.stop_background_jobs() + @defer.inlineCallbacks def start_background_jobs(self): + self.incoming_mail_fetcher = yield self.incoming_mail_fetcher reactor.callFromThread(self.incoming_mail_fetcher.startService) def stop_background_jobs(self): @@ -81,7 +85,7 @@ class LeapSession(object): def sync(self): try: - self.soledad_session.sync() + return self.soledad_session.sync() except: traceback.print_exc(file=sys.stderr) raise @@ -113,11 +117,11 @@ class LeapSessionFactory(object): nicknym = self._create_nicknym(account_email, auth.token, auth.uuid, soledad) account = self._create_account(account_email, soledad) - incoming_mail_fetcher = self._create_incoming_mail_fetcher(nicknym, soledad, auth, auth.username) + deferred_incoming_mail_fetcher = self._create_incoming_mail_fetcher(nicknym, soledad, account, account_email) smtp = LeapSmtp(self._provider, auth, nicknym.keymanager) - return LeapSession(self._provider, auth, soledad, nicknym, account, incoming_mail_fetcher, smtp) + return LeapSession(self._provider, auth, soledad, nicknym, account, deferred_incoming_mail_fetcher, smtp) def _lookup_session(self, key): global SESSIONS @@ -151,8 +155,11 @@ class LeapSessionFactory(object): # memstore = MemoryStore(permanent_store=SoledadStore(soledad_session.soledad)) # return SoledadBackedAccount(uuid, soledad_session.soledad, memstore) - def _create_incoming_mail_fetcher(self, nicknym, soledad_session, auth, username): - return IncomingMail(nicknym.keymanager, - soledad_session.soledad, - auth.uuid, - self._config.fetch_interval_in_s) + @defer.inlineCallbacks + def _create_incoming_mail_fetcher(self, nicknym, soledad_session, account, user_mail): + # FIXME Replace inbox collection by our own mailbox indexer + inbox = yield account.getMailbox('INBOX') + defer.returnValue(IncomingMail(nicknym.keymanager, + soledad_session.soledad, + inbox, + user_mail)) diff --git a/service/pixelated/bitmask_libraries/soledad.py b/service/pixelated/bitmask_libraries/soledad.py index 684d7da8..0546a158 100644 --- a/service/pixelated/bitmask_libraries/soledad.py +++ b/service/pixelated/bitmask_libraries/soledad.py @@ -88,8 +88,7 @@ class SoledadSession(object): raise def sync(self): - if self.soledad.need_sync(self.soledad.server_url): - self.soledad.sync() + return self.soledad.sync() def _discover_soledad_server(self): try: -- cgit v1.2.3