diff options
-rw-r--r-- | mail/changes/bug_return_factory_and_port_imap | 2 | ||||
-rw-r--r-- | mail/src/leap/mail/imap/service/imap.py | 10 |
2 files changed, 8 insertions, 4 deletions
diff --git a/mail/changes/bug_return_factory_and_port_imap b/mail/changes/bug_return_factory_and_port_imap new file mode 100644 index 00000000..75f96d7b --- /dev/null +++ b/mail/changes/bug_return_factory_and_port_imap @@ -0,0 +1,2 @@ + o Return the necessary references (factory, port) from IMAP4 launch + in order to be able to properly stop it. Related to #4199.
\ No newline at end of file diff --git a/mail/src/leap/mail/imap/service/imap.py b/mail/src/leap/mail/imap/service/imap.py index b840e864..b641d2eb 100644 --- a/mail/src/leap/mail/imap/service/imap.py +++ b/mail/src/leap/mail/imap/service/imap.py @@ -141,7 +141,9 @@ def run_service(*args, **kwargs): Main entry point to run the service from the client. :returns: the LoopingCall instance that will have to be stoppped - before shutting down the client. + before shutting down the client, the port as returned by + the reactor when starts listening, and the factory for + the protocol. """ leap_assert(len(args) == 2) soledad, keymanager = args @@ -157,8 +159,8 @@ def run_service(*args, **kwargs): from twisted.internet import reactor try: - reactor.listenTCP(port, factory, - interface="localhost") + tport = reactor.listenTCP(port, factory, + interface="localhost") fetcher = LeapIncomingMail( keymanager, soledad, @@ -174,7 +176,7 @@ def run_service(*args, **kwargs): fetcher.start_loop() logger.debug("IMAP4 Server is RUNNING in port %s" % (port,)) leap_events.signal(IMAP_SERVICE_STARTED, str(port)) - return fetcher + return fetcher, tport, factory # not ok, signal error. leap_events.signal(IMAP_SERVICE_FAILED_TO_START, str(port)) |