ensure iterator is safe (traverse over the list in snapshot created within a lock), avoids getting modified state as well as "dictionary changed size during iteration" errors

pull/2814/head
sebres 2020-05-20 15:36:06 +02:00
parent afb7a93163
commit 0ae2ef68be
1 changed files with 3 additions and 2 deletions

View File

@ -104,7 +104,7 @@ class BanManager:
def getBanList(self): def getBanList(self):
with self.__lock: with self.__lock:
return self.__banList.keys() return list(self.__banList.keys())
## ##
# Returns a iterator to ban list (used in reload, so idle). # Returns a iterator to ban list (used in reload, so idle).
@ -112,8 +112,9 @@ class BanManager:
# @return ban list iterator # @return ban list iterator
def __iter__(self): def __iter__(self):
# ensure iterator is safe (traverse over the list in snapshot created within lock):
with self.__lock: with self.__lock:
return self.__banList.itervalues() return iter(list(self.__banList.values()))
## ##
# Returns normalized value # Returns normalized value