aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2010-06-05 02:40:52 +0000
committerRob Austein <sra@hactrn.net>2010-06-05 02:40:52 +0000
commit38cb95480e1f9a6b389d8f495ae8445a8d6e2a53 (patch)
tree0728a258cb2af746e29d02ebe1ab538bb285db6b
parent39e00194d803f202b110cfe71d4414cbdbc6c4ba (diff)
Cleanup
svn path=/rpkid/rpki/adns.py; revision=3271
-rw-r--r--rpkid/rpki/adns.py54
1 files changed, 21 insertions, 33 deletions
diff --git a/rpkid/rpki/adns.py b/rpkid/rpki/adns.py
index 273abf73..9f4f9ada 100644
--- a/rpkid/rpki/adns.py
+++ b/rpkid/rpki/adns.py
@@ -46,13 +46,26 @@ resolver = dns.resolver.Resolver()
if resolver.cache is None:
resolver.cache = dns.resolver.Cache()
-## @var nscache
-# Nameserver map, maps values from resolver.nameservers to (af,
-# address) pairs. The latter turns out to be a more useful form for
-# us to use internally, because it simplifies the checks we need to
-# make upon packet receiption.
-
-nscache = {}
+## @var nameservers
+# Nameservers from resolver.nameservers converted to (af, address)
+# pairs. The latter turns out to be a more useful form for us to use
+# internally, because it simplifies the checks we need to make upon
+# packet receiption.
+
+nameservers = []
+
+for ns in resolver.nameservers:
+ try:
+ nameservers.append((dns.inet.AF_INET, dns.ipv4.inet_aton(ns)))
+ continue
+ except:
+ pass
+ try:
+ nameservers.append((dns.inet.AF_INET6, dns.ipv6.inet_aton(ns)))
+ continue
+ except:
+ pass
+ rpki.log.error("Couldn't parse nameserver address %r" % ns)
class dispatcher(asyncore.dispatcher):
"""
@@ -137,34 +150,9 @@ class query(object):
self.request.use_edns(resolver.edns, resolver.ednsflags, resolver.payload)
self.response = None
self.backoff = 0.10
- self.clone_nameservers()
+ self.nameservers = nameservers[:]
self.loop1()
- def clone_nameservers(self):
- """
- Parse resolver.nameservers into (address family, address) pairs,
- cache result to speed up future queries, and construct nameserver
- list for this query.
- """
- for ns in resolver.nameservers:
- if ns not in nscache:
- try:
- addr = dns.ipv4.inet_aton(ns)
- except:
- pass
- else:
- nscache[ns] = (dns.inet.AF_INET, addr)
- continue
- try:
- addr = dns.ipv6.inet_aton(ns)
- except:
- pass
- else:
- nscache[ns] = (dns.inet.AF_INET6, addr)
- continue
- raise ValueError
- self.nameservers = [nscache[ns] for ns in resolver.nameservers]
-
def loop1(self):
"""
Outer loop. If we haven't got a response yet and still have