From b6123d0f98a60914e5d6a0a6d4f80f72b935a697 Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Tue, 3 Sep 2013 11:12:18 +0200 Subject: Return SMTP factory so the client can stop it. --- mail/changes/feature_return-smtp-factory | 1 + mail/src/leap/mail/smtp/__init__.py | 35 +++++++++++++++++--------------- 2 files changed, 20 insertions(+), 16 deletions(-) create mode 100644 mail/changes/feature_return-smtp-factory (limited to 'mail') diff --git a/mail/changes/feature_return-smtp-factory b/mail/changes/feature_return-smtp-factory new file mode 100644 index 0000000..d46cac3 --- /dev/null +++ b/mail/changes/feature_return-smtp-factory @@ -0,0 +1 @@ + o SMTP service invocation returns factory instance. 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