use empty search list, make sure query fqdn is really a absolute fqdn
This commit is contained in:
parent
a210936dcf
commit
f30d283792
@ -151,17 +151,20 @@ def query_ns(qname, rdtype, origin=None):
|
|||||||
:return: IP (as str) or "-" if ns is not available
|
:return: IP (as str) or "-" if ns is not available
|
||||||
"""
|
"""
|
||||||
origin, name = parse_name(qname, origin)
|
origin, name = parse_name(qname, origin)
|
||||||
|
fqdn = name + origin
|
||||||
|
assert fqdn.is_absolute()
|
||||||
origin_str = str(origin)
|
origin_str = str(origin)
|
||||||
nameserver = get_ns_info(origin_str)[0]
|
nameserver = get_ns_info(origin_str)[0]
|
||||||
resolver = dns.resolver.Resolver(configure=False)
|
resolver = dns.resolver.Resolver(configure=False)
|
||||||
# we do not configure it from resolv.conf, but patch in the values we
|
# we do not configure it from resolv.conf, but patch in the values we
|
||||||
# want into the documented attributes:
|
# want into the documented attributes:
|
||||||
resolver.nameservers = [nameserver, ]
|
resolver.nameservers = [nameserver, ]
|
||||||
resolver.search = [dns.name.from_text('nsupdate.info'), ] # FIXME: should work with empty list
|
resolver.search = []
|
||||||
resolver.lifetime = RESOLVER_TIMEOUT
|
resolver.lifetime = RESOLVER_TIMEOUT
|
||||||
try:
|
try:
|
||||||
answer = resolver.query(qname, rdtype)
|
answer = resolver.query(fqdn, rdtype)
|
||||||
ip = str(list(answer)[0])
|
ip = str(list(answer)[0])
|
||||||
|
logger.debug("query: %s answer: %s" % (fqdn.to_text(), ip))
|
||||||
return ip
|
return ip
|
||||||
except (dns.resolver.Timeout, dns.resolver.NoNameservers): # socket.error also?
|
except (dns.resolver.Timeout, dns.resolver.NoNameservers): # socket.error also?
|
||||||
logger.warning("timeout when querying for name '%s' in zone '%s' with rdtype '%s'." % (
|
logger.warning("timeout when querying for name '%s' in zone '%s' with rdtype '%s'." % (
|
||||||
|
Loading…
x
Reference in New Issue
Block a user