diff options
-rw-r--r-- | changes/bug_properly_logout | 1 | ||||
-rw-r--r-- | changes/feature_3409-make-imap-poll-configurable | 2 | ||||
-rw-r--r-- | src/leap/bitmask/crypto/srpauth.py | 19 | ||||
-rw-r--r-- | src/leap/bitmask/gui/mainwindow.py | 3 | ||||
-rw-r--r-- | src/leap/bitmask/services/mail/imap.py | 29 | ||||
-rw-r--r-- | src/leap/bitmask/services/soledad/soledadbootstrapper.py | 3 |
6 files changed, 48 insertions, 9 deletions
diff --git a/changes/bug_properly_logout b/changes/bug_properly_logout new file mode 100644 index 00000000..a5d0d972 --- /dev/null +++ b/changes/bug_properly_logout @@ -0,0 +1 @@ + o Use DELETE /1/logout to properly logout. Fixes #3510.
\ No newline at end of file diff --git a/changes/feature_3409-make-imap-poll-configurable b/changes/feature_3409-make-imap-poll-configurable new file mode 100644 index 00000000..8730b5ab --- /dev/null +++ b/changes/feature_3409-make-imap-poll-configurable @@ -0,0 +1,2 @@ + o Make mail fetch interval in imap service configurable via environment + variable. Closes: #3409 diff --git a/src/leap/bitmask/crypto/srpauth.py b/src/leap/bitmask/crypto/srpauth.py index 2d34bb74..55fff82b 100644 --- a/src/leap/bitmask/crypto/srpauth.py +++ b/src/leap/bitmask/crypto/srpauth.py @@ -478,13 +478,14 @@ class SRPAuth(QtCore.QObject): """ logger.debug("Starting logout...") - leap_assert(self.get_session_id(), - "Cannot logout an unexisting session") + if self.get_session_id() is None: + logger.debug("Already logged out") + return logout_url = "%s/%s/%s/" % (self._provider_config.get_api_uri(), self._provider_config. get_api_version(), - "sessions") + "logout") try: self._session.delete(logout_url, data=self.get_session_id(), @@ -494,12 +495,12 @@ class SRPAuth(QtCore.QObject): except Exception as e: logger.warning("Something went wrong with the logout: %r" % (e,)) - - self.set_session_id(None) - self.set_uid(None) - # Also reset the session - self._session = self._fetcher.session() - logger.debug("Successfully logged out.") + else: + self.set_session_id(None) + self.set_uid(None) + # Also reset the session + self._session = self._fetcher.session() + logger.debug("Successfully logged out.") def set_session_id(self, session_id): QtCore.QMutexLocker(self._session_id_lock) diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index e84b7a7b..9b9359bd 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -1343,6 +1343,9 @@ class MainWindow(QtGui.QMainWindow): Starts the logout sequence """ + + self._soledad_bootstrapper.cancel_bootstrap() + # XXX: If other defers are doing authenticated stuff, this # might conflict with those. CHECK! threads.deferToThread(self._srp_auth.logout) diff --git a/src/leap/bitmask/services/mail/imap.py b/src/leap/bitmask/services/mail/imap.py index cf93c60e..4828180e 100644 --- a/src/leap/bitmask/services/mail/imap.py +++ b/src/leap/bitmask/services/mail/imap.py @@ -18,6 +18,7 @@ Initialization of imap service """ import logging +import os #import sys from leap.mail.imap.service import imap @@ -25,6 +26,30 @@ from leap.mail.imap.service import imap logger = logging.getLogger(__name__) +# The name of the environment variable that has to be +# set to override the default time value, in seconds. +INCOMING_CHECK_PERIOD_ENV = "BITMASK_MAILCHECK_PERIOD" + + +def get_mail_check_period(): + """ + Tries to get the value of the environment variable for + overriding the period for incoming mail fetch. + """ + period = None + period_str = os.environ.get(INCOMING_CHECK_PERIOD_ENV, None) + try: + period = int(period_str) + except (ValueError, TypeError): + logger.warning("BAD value found for %s: %s" % ( + INCOMING_CHECK_PERIOD_ENV, + period_str)) + except Exception as exc: + logger.warning("Unhandled error while getting %s: %r" % ( + INCOMING_CHECK_PERIOD_ENV, + exc)) + return period + def start_imap_service(*args, **kwargs): """ @@ -34,6 +59,10 @@ def start_imap_service(*args, **kwargs): """ logger.debug('Launching imap service') + override_period = get_mail_check_period() + if override_period: + kwargs['check_period'] = override_period + # Uncomment the next two lines to get a separate debugging log # TODO handle this by a separate flag. #log.startLogging(open('/tmp/leap-imap.log', 'w')) diff --git a/src/leap/bitmask/services/soledad/soledadbootstrapper.py b/src/leap/bitmask/services/soledad/soledadbootstrapper.py index a481df4e..2419fc0d 100644 --- a/src/leap/bitmask/services/soledad/soledadbootstrapper.py +++ b/src/leap/bitmask/services/soledad/soledadbootstrapper.py @@ -89,6 +89,9 @@ class SoledadBootstrapper(AbstractBootstrapper): # retries + def cancel_bootstrap(self): + self._soledad_retries = self.MAX_INIT_RETRIES + def should_retry_initialization(self): """ Returns True if we should retry the initialization. |