=== modified file 'mandos' --- mandos 2019-07-28 14:39:47 +0000 +++ mandos 2019-07-30 17:03:57 +0000 @@ -821,9 +821,9 @@ approved: bool(); 'None' if not yet approved/disapproved approval_delay: datetime.timedelta(); Time to wait for approval approval_duration: datetime.timedelta(); Duration of one approval - checker: subprocess.Popen(); a running checker process used - to see if the client lives. - 'None' if no process is running. + checker: multiprocessing.Process(); a running checker process used + to see if the client lives. 'None' if no process is + running. checker_callback_tag: a GLib event source tag, or None checker_command: string; External command which is run to check if client lives. %() expansions are done at @@ -1036,11 +1036,12 @@ def checker_callback(self, source, condition, connection, command): """The checker has completed, so take appropriate actions.""" - self.checker_callback_tag = None - self.checker = None # Read return code from connection (see call_pipe) returncode = connection.recv() connection.close() + self.checker.join() + self.checker_callback_tag = None + self.checker = None if returncode >= 0: self.last_checker_status = returncode