mirrorlist: Use a thread-local copy of the tree to prevent changing the global one
This makes sure that the global version does not get changed while processing a request, keeping the hostnet check working across requests. Signed-off-by: Patrick Uiterwijk <puiterwijk@redhat.com>
This commit is contained in:
parent
ed1aa2476b
commit
738e67c90c
1 changed files with 5 additions and 3 deletions
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
# standard library modules in alphabetical order
|
# standard library modules in alphabetical order
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
import copy
|
||||||
import datetime
|
import datetime
|
||||||
import getopt
|
import getopt
|
||||||
import logging
|
import logging
|
||||||
|
@ -234,11 +235,12 @@ def tree_lookup(tree, ip, field, maxResults=None):
|
||||||
# and we'll get a new copy of the tree from our parent the next time it
|
# and we'll get a new copy of the tree from our parent the next time it
|
||||||
# fork()s.
|
# fork()s.
|
||||||
# returns a list of tuples (prefix, data)
|
# returns a list of tuples (prefix, data)
|
||||||
|
ltree = copy.deepcopy(tree)
|
||||||
result = []
|
result = []
|
||||||
len_data = 0
|
len_data = 0
|
||||||
if ip is None:
|
if ip is None:
|
||||||
return result
|
return result
|
||||||
node = tree.search_best(ip.strNormal())
|
node = ltree.search_best(ip.strNormal())
|
||||||
while node is not None:
|
while node is not None:
|
||||||
prefix = node.prefix
|
prefix = node.prefix
|
||||||
if type(node.data[field]) == list:
|
if type(node.data[field]) == list:
|
||||||
|
@ -248,8 +250,8 @@ def tree_lookup(tree, ip, field, maxResults=None):
|
||||||
t = (prefix, node.data[field],)
|
t = (prefix, node.data[field],)
|
||||||
result.append(t)
|
result.append(t)
|
||||||
if maxResults is None or len_data < maxResults:
|
if maxResults is None or len_data < maxResults:
|
||||||
tree.delete(prefix)
|
ltree.delete(prefix)
|
||||||
node = tree.search_best(ip.strNormal())
|
node = ltree.search_best(ip.strNormal())
|
||||||
else:
|
else:
|
||||||
break
|
break
|
||||||
return result
|
return result
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue