summaryrefslogtreecommitdiff
path: root/service/pixelated/bitmask_libraries
diff options
context:
space:
mode:
authorDuda Dornelles <ddornell@thoughtworks.com>2015-02-18 13:40:41 -0200
committerDuda Dornelles <ddornell@thoughtworks.com>2015-02-18 13:40:49 -0200
commitdd63db87fdbb9667c1027edd700b4047b6983d1f (patch)
tree85c7a2875f535412760dc7d87c7550777f265814 /service/pixelated/bitmask_libraries
parent4a8217744e1d1ca60d158c3497a09b92f857a7fd (diff)
#294 - not failing service startup if smtp fails to start
Diffstat (limited to 'service/pixelated/bitmask_libraries')
-rw-r--r--service/pixelated/bitmask_libraries/session.py9
-rw-r--r--service/pixelated/bitmask_libraries/smtp.py13
2 files changed, 19 insertions, 3 deletions
diff --git a/service/pixelated/bitmask_libraries/session.py b/service/pixelated/bitmask_libraries/session.py
index 158d6605..9f21fbe6 100644
--- a/service/pixelated/bitmask_libraries/session.py
+++ b/service/pixelated/bitmask_libraries/session.py
@@ -14,6 +14,7 @@
# You should have received a copy of the GNU Affero General Public License
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
import errno
+import logging
import traceback
import sys
@@ -65,7 +66,7 @@ class LeapSession(object):
- ``incoming_mail_fetcher`` Background job for fetching incoming mails from LEAP server (LeapIncomingMail)
"""
- def __init__(self, provider, srp_session, soledad_session, nicknym, soledad_account, incoming_mail_fetcher):
+ def __init__(self, provider, srp_session, soledad_session, nicknym, soledad_account, incoming_mail_fetcher, smtp):
"""
Constructor.
@@ -73,6 +74,7 @@ class LeapSession(object):
:type leap_config: LeapConfig
"""
+ self.smtp = smtp
self.config = provider.config
self.provider = provider
self.srp_session = srp_session
@@ -133,9 +135,10 @@ class LeapSessionFactory(object):
account, auth)
smtp = LeapSmtp(self._provider, nicknym.keymanager, auth)
- smtp.start()
- return LeapSession(self._provider, auth, soledad, nicknym, account, incoming_mail_fetcher)
+ smtp.ensure_running()
+
+ return LeapSession(self._provider, auth, soledad, nicknym, account, incoming_mail_fetcher, smtp)
def _lookup_session(self, key):
global SESSIONS
diff --git a/service/pixelated/bitmask_libraries/smtp.py b/service/pixelated/bitmask_libraries/smtp.py
index 6bbe0051..d5236e8e 100644
--- a/service/pixelated/bitmask_libraries/smtp.py
+++ b/service/pixelated/bitmask_libraries/smtp.py
@@ -13,12 +13,16 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
+import logging
import os
import requests
from .certs import which_bundle
from leap.mail.smtp import setup_smtp_gateway
+logger = logging.getLogger(__name__)
+
+
class LeapSmtp(object):
TWISTED_PORT = 4650
@@ -86,6 +90,15 @@ class LeapSmtp(object):
encrypted_only=False
)
+ def ensure_running(self):
+ if not self._smtp_service:
+ try:
+ self.start()
+ except Exception as e:
+ logger.warning("Couldn't start the SMTP server now, will try again when the user tries to use it")
+ return False
+ return True
+
def stop(self):
if self._smtp_service is not None:
self._smtp_port.stopListening()