From 6d4ea07b72b2f46a822a97454fbd1bedacd337ba Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Tue, 9 Feb 2016 17:31:30 +0000 Subject: [PATCH] Remove a driver from the list of dead drivers after it has been restarted. Closes GH-1165. --- src/drivers/__init__.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/drivers/__init__.py b/src/drivers/__init__.py index 1818fdb08..89f90e481 100644 --- a/src/drivers/__init__.py +++ b/src/drivers/__init__.py @@ -38,7 +38,7 @@ from .. import conf, ircmsgs, log as supylog, utils from ..utils import minisix _drivers = {} -_deadDrivers = [] +_deadDrivers = set() _newDrivers = [] class IrcDriver(object): @@ -94,7 +94,7 @@ def add(name, driver): def remove(name): """Removes the driver with the given name from the loop.""" - _deadDrivers.append(name) + _deadDrivers.add(name) def run(): """Runs the whole driver loop.""" @@ -104,7 +104,7 @@ def run(): driver.run() except: log.exception('Uncaught exception in in drivers.run:') - _deadDrivers.append(name) + _deadDrivers.add(name) for name in _deadDrivers: try: driver = _drivers[name] @@ -119,6 +119,7 @@ def run(): while _newDrivers: (name, driver) = _newDrivers.pop() log.debug('Adding new driver %s.', name) + _deadDrivers.discard(name) if name in _drivers: log.warning('Driver %s already added, killing it.', name) _drivers[name].die()