From b6123d0f98a60914e5d6a0a6d4f80f72b935a697 Mon Sep 17 00:00:00 2001
From: Kali Kaneko <kali@leap.se>
Date: Tue, 3 Sep 2013 11:12:18 +0200
Subject: Return SMTP factory so the client can stop it.

---
 mail/src/leap/mail/smtp/__init__.py | 35 +++++++++++++++++++----------------
 1 file changed, 19 insertions(+), 16 deletions(-)

(limited to 'mail/src/leap')

diff --git a/mail/src/leap/mail/smtp/__init__.py b/mail/src/leap/mail/smtp/__init__.py
index d5d61bf..cc9cc26 100644
--- a/mail/src/leap/mail/smtp/__init__.py
+++ b/mail/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" % (
-- 
cgit v1.2.3