RRset's name might not be the query name.
"""
- def __init__(self, qname, rdtype, rdclass, response,
- raise_on_no_answer=True, nameserver=None,
+ def __init__(self, qname, rdtype, rdclass, response, nameserver=None,
port=None):
self.qname = qname
self.rdtype = rdtype
break
continue
except KeyError:
- if raise_on_no_answer:
- raise NoAnswer(response=response)
- if raise_on_no_answer:
- raise NoAnswer(response=response)
- if rrset is None and raise_on_no_answer:
- raise NoAnswer(response=response)
+ # Exit the chaining loop
+ break
self.canonical_name = qname
self.rrset = rrset
if rrset is None:
rcode = response.rcode()
if rcode == dns.rcode.NOERROR:
answer = Answer(self.qname, self.rdtype, self.rdclass, response,
- self.raise_on_no_answer, self.nameserver,
- self.port)
+ self.nameserver, self.port)
if self.resolver.cache:
self.resolver.cache.put((self.qname, self.rdtype,
self.rdclass), answer)
+ if answer.rrset is None and self.raise_on_no_answer:
+ raise NoAnswer(response=answer.response)
return (answer, True)
elif rcode == dns.rcode.NXDOMAIN:
self.nxdomain_responses[self.qname] = response
message = dns.message.from_text(dangling_cname_0_message_text)
name = dns.name.from_text('example.')
answer = dns.resolver.Answer(name, dns.rdatatype.A, dns.rdataclass.IN,
- message, raise_on_no_answer=False)
+ message)
def test_python_internal_truth(answer):
if answer:
return True