summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Shyba <victor.shyba@gmail.com>2015-05-27 18:51:44 -0300
committerVictor Shyba <victor.shyba@gmail.com>2015-05-28 11:44:06 -0300
commit7826a96e526a450380917f9b89e3714576ca50b7 (patch)
treeee0ea8b95545bd0701dac0fbc252c2930b61b007
parentaacf74601f35511b91a9ac111729c9c2cbf99674 (diff)
[bug] use dict keys to iterate
We ran into a RuntimeError yesterday on this line, the callback can modify this dict and make the iteration raise an error. Using keys method to iterate is safer. See http://stackoverflow.com/questions/11941817/python-runtimeerror-dictionary-changed-size-during-iteration-how-to-avoid-th/11941855#11941855
-rw-r--r--src/leap/common/events/client.py3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/leap/common/events/client.py b/src/leap/common/events/client.py
index 6b234a1..0706fe3 100644
--- a/src/leap/common/events/client.py
+++ b/src/leap/common/events/client.py
@@ -184,7 +184,7 @@ class EventsClient(object):
:type msg: list(str)
"""
logger.debug("Handling event %s..." % event)
- for uid in self._callbacks[event]:
+ for uid in self._callbacks[event].keys():
callback = self._callbacks[event][uid]
logger.debug("Executing callback %s." % uid)
callback(event, *content)
@@ -352,7 +352,6 @@ class EventsClientThread(threading.Thread, EventsClient):
"""
self._sub.socket.setsockopt(zmq.SUBSCRIBE, tag)
-
def _unsubscribe(self, tag):
"""
Unsubscribe from a tag on the zmq SUB socket.