summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2013-09-03 11:12:18 +0200
committerKali Kaneko <kali@leap.se>2013-09-03 11:12:18 +0200
commit14902d1cc79d1777361e144ff3c46ff52cc005fd (patch)
treeb9b1f284a3e881e1c682845d8d8a6bb1b4de0ffb
parent9a6927faf5d5baf8abf606606681554592a9a4a9 (diff)
Return SMTP factory so the client can stop it.
-rw-r--r--changes/feature_return-smtp-factory1
-rw-r--r--src/leap/mail/smtp/__init__.py35
2 files changed, 20 insertions, 16 deletions
diff --git a/changes/feature_return-smtp-factory b/changes/feature_return-smtp-factory
new file mode 100644
index 0000000..d46cac3
--- /dev/null
+++ b/changes/feature_return-smtp-factory
@@ -0,0 +1 @@
+ o SMTP service invocation returns factory instance.
diff --git a/src/leap/mail/smtp/__init__.py b/src/leap/mail/smtp/__init__.py
index d5d61bf..cc9cc26 100644
--- a/src/leap/mail/smtp/__init__.py
+++ b/src/leap/mail/smtp/__init__.py
@@ -37,22 +37,24 @@ def setup_smtp_relay(port, keymanager, smtp_host, smtp_port,
This function sets up the SMTP relay configuration and the Twisted
reactor.
- @param port: The port in which to run the server.
- @type port: int
- @param keymanager: A Key Manager from where to get recipients' public
- keys.
- @type keymanager: leap.common.keymanager.KeyManager
- @param smtp_host: The hostname of the remote SMTP server.
- @type smtp_host: str
- @param smtp_port: The port of the remote SMTP server.
- @type smtp_port: int
- @param smtp_cert: The client certificate for authentication.
- @type smtp_cert: str
- @param smtp_key: The client key for authentication.
- @type smtp_key: str
- @param encrypted_only: Whether the SMTP relay should send unencrypted mail
- or not.
- @type encrypted_only: bool
+ :param port: The port in which to run the server.
+ :type port: int
+ :param keymanager: A Key Manager from where to get recipients' public
+ keys.
+ :type keymanager: leap.common.keymanager.KeyManager
+ :param smtp_host: The hostname of the remote SMTP server.
+ :type smtp_host: str
+ :param smtp_port: The port of the remote SMTP server.
+ :type smtp_port: int
+ :param smtp_cert: The client certificate for authentication.
+ :type smtp_cert: str
+ :param smtp_key: The client key for authentication.
+ :type smtp_key: str
+ :param encrypted_only: Whether the SMTP relay should send unencrypted mail
+ or not.
+ :type encrypted_only: bool
+
+ :returns: SMTPFactory
"""
# The configuration for the SMTP relay is a dict with the following
# format:
@@ -77,6 +79,7 @@ def setup_smtp_relay(port, keymanager, smtp_host, smtp_port,
try:
reactor.listenTCP(port, factory)
signal(proto.SMTP_SERVICE_STARTED, str(smtp_port))
+ return factory
except CannotListenError:
logger.error("STMP Service failed to start: "
"cannot listen in port %s" % (