From: Min RK Date: Wed, 11 Jan 2017 10:22:00 +0000 (+0100) Subject: copy handler list in IOLoop.close(all_fds=True) X-Git-Tag: v4.5.0~17^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F1927%2Fhead;p=thirdparty%2Ftornado.git copy handler list in IOLoop.close(all_fds=True) avoids modifying dict during iteration if close method on fd triggers something like `IOLoop.remove_handler` --- diff --git a/tornado/ioloop.py b/tornado/ioloop.py index 1b1a07cd5..74d268252 100644 --- a/tornado/ioloop.py +++ b/tornado/ioloop.py @@ -715,7 +715,7 @@ class PollIOLoop(IOLoop): self._closing = True self.remove_handler(self._waker.fileno()) if all_fds: - for fd, handler in self._handlers.values(): + for fd, handler in list(self._handlers.values()): self.close_fd(fd) self._waker.close() self._impl.close()