summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorBruno Wagner Goncalves <bwagner@thoughtworks.com>2014-08-06 01:53:49 -0300
committerBruno Wagner Goncalves <bwagner@thoughtworks.com>2014-08-06 01:53:49 -0300
commit26cbb616eb3ada3a0fb82e3156737b43cd2bc1ac (patch)
tree7a8c13899a6ddeef15f241166560455e439c48fc /service
parent821c1a76d80c0259e10e66443eb458f14d840b85 (diff)
LeapSmtp SMTP_PORT constant is in fact the twisted communication port and must be unique between instances, so it cannot be a constant unless we change LeapSmtp to a singleton
Diffstat (limited to 'service')
-rw-r--r--service/app/bitmask_libraries/smtp.py8
-rw-r--r--service/test/bitmask_libraries/smtp_test.py4
2 files changed, 9 insertions, 3 deletions
diff --git a/service/app/bitmask_libraries/smtp.py b/service/app/bitmask_libraries/smtp.py
index 5fa7ad70..f07a4838 100644
--- a/service/app/bitmask_libraries/smtp.py
+++ b/service/app/bitmask_libraries/smtp.py
@@ -2,6 +2,8 @@ import os
import requests
from .certs import which_bundle
from leap.mail.smtp import setup_smtp_gateway
+import random
+
class LeapSmtp(object):
@@ -14,6 +16,7 @@ class LeapSmtp(object):
self._hostname, self._port = self._discover_smtp_server()
self._smtp_port = None
self._smtp_service = None
+ self._twisted_port = 10000 + int(random.random() * 5000)
def smtp_info(self):
return ('localhost', LeapSmtp.SMTP_PORT)
@@ -60,14 +63,15 @@ class LeapSmtp(object):
email = '%s@%s' % (self._srp_session.user_name, self._provider.domain)
self._smtp_service, self._smtp_port = setup_smtp_gateway(
- port=LeapSmtp.SMTP_PORT,
+ port=(self._twisted_port),
userid=email,
keymanager=self._keymanager,
smtp_host=self._hostname.encode('UTF-8'),
smtp_port=self._port,
smtp_cert=cert_path,
smtp_key=cert_path,
- encrypted_only=False)
+ encrypted_only=False
+ )
def stop(self):
if self._smtp_service is not None:
diff --git a/service/test/bitmask_libraries/smtp_test.py b/service/test/bitmask_libraries/smtp_test.py
index ed5fc520..4aa2d01d 100644
--- a/service/test/bitmask_libraries/smtp_test.py
+++ b/service/test/bitmask_libraries/smtp_test.py
@@ -50,12 +50,14 @@ class LeapSmtpTest(AbstractLeapTest):
@patch('app.bitmask_libraries.smtp.setup_smtp_gateway')
def test_that_start_calls_setup_smtp_gateway(self, gateway_mock):
smtp = LeapSmtp(self.provider, self.keymanager, self.srp_session)
+ port = 500
+ smtp._twisted_port = port
gateway_mock.return_value = (None, None)
with HTTMock(ca_cert_mock, not_found_mock):
smtp.start()
cert_path = self._client_cert_path()
- gateway_mock.assert_called_with(keymanager=self.keymanager, smtp_cert=cert_path, smtp_key=cert_path, userid='test_user@some-server.test', smtp_port='1234', encrypted_only=False, smtp_host='smtp.some-sever.test', port=2014)
+ gateway_mock.assert_called_with(keymanager=self.keymanager, smtp_cert=cert_path, smtp_key=cert_path, userid='test_user@some-server.test', smtp_port='1234', encrypted_only=False, smtp_host='smtp.some-sever.test', port=port)
def test_that_client_stop_does_nothing_if_not_started(self):
smtp = LeapSmtp(self.provider, self.keymanager, self.srp_session)