From 26cbb616eb3ada3a0fb82e3156737b43cd2bc1ac Mon Sep 17 00:00:00 2001 From: Bruno Wagner Goncalves Date: Wed, 6 Aug 2014 01:53:49 -0300 Subject: 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 --- service/app/bitmask_libraries/smtp.py | 8 ++++++-- service/test/bitmask_libraries/smtp_test.py | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'service') 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) -- cgit v1.2.3