Commit 3c87d5ae authored by Colomban Wendling's avatar Colomban Wendling

Mails: properly pop eaten item even if the server is not started

This fixes ThreadedSMTP.quit() when the connection to the server is
down as Queue.join() will wait for all tasks to be popped and accounted
for, but we wouldn't account for the fake (empty) task because the
connection to the server would not be open.

So, properly differentiate a closed connection from a queue timeout.
parent 96909d62
......@@ -43,10 +43,12 @@ class ThreadedSMTP(object):
server = None
while self._loop or not self._queue.empty():
task_eaten = True
args, kwargs = self._queue.get(timeout=timeout)
except queue.Empty:
server = self.__server_quit(server)
task_eaten = False # we didn't eat a task, just timeout
except KeyboardInterrupt as e:
......@@ -58,7 +60,7 @@ class ThreadedSMTP(object):
except Exception as e:
logging.warning("Couldn't send email: %s" % str(e))
if server: # server is None on exception queue.Empty
if task_eaten:
Markdown is supported
0% or
Finish editing this message first!
Please register or to comment