summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2017-06-28 14:28:21 +0200
committerJ08nY2017-08-07 17:39:08 +0200
commitcc99242654f2bcc11b3a6f124908de4b175c48d4 (patch)
tree58652370d33e9f7b0a02926c18c44a131821d27e
parent7afec8975cb2c8fa1c6725176f52e100d396d1c4 (diff)
downloadmailman-cc99242654f2bcc11b3a6f124908de4b175c48d4.tar.gz
mailman-cc99242654f2bcc11b3a6f124908de4b175c48d4.tar.zst
mailman-cc99242654f2bcc11b3a6f124908de4b175c48d4.zip
-rw-r--r--src/mailman/bin/master.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mailman/bin/master.py b/src/mailman/bin/master.py
index 0b273d332..a23fb8e0b 100644
--- a/src/mailman/bin/master.py
+++ b/src/mailman/bin/master.py
@@ -188,6 +188,9 @@ class PIDWatcher:
def __init__(self):
self._pids = {}
+ def __contains__(self, pid):
+ return pid in self._pids.keys()
+
def __iter__(self):
# Safely iterate over all the keys in the dictionary. Because
# asynchronous signals are involved, the dictionary's size could
@@ -402,6 +405,10 @@ class Loop:
except InterruptedError: # pragma: nocover
# If the system call got interrupted, just restart it.
continue
+ if pid not in self._kids:
+ # Not a runner subprocess, maybe a plugin started one
+ # ignore it
+ continue
# Find out why the subprocess exited by getting the signal
# received or exit status.
if os.WIFSIGNALED(status):