]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
move raise_on_no_error out of Answer
authorBob Halley <halley@dnspython.org>
Wed, 20 May 2020 02:23:29 +0000 (19:23 -0700)
committerBob Halley <halley@dnspython.org>
Wed, 20 May 2020 02:23:29 +0000 (19:23 -0700)
dns/resolver.py
tests/test_resolver.py

index fe409e0efbc9ca043a0359b804fd66aa147976a6..d63ed36429f2b7a46756420410df1f7aa15fc1e0 100644 (file)
@@ -201,8 +201,7 @@ class Answer(object):
     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
@@ -233,12 +232,8 @@ class Answer(object):
                             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:
@@ -635,11 +630,12 @@ class _Resolution(object):
         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
index 373ce606605bd746546825ffd64b67909457b29a..389bcfb048bc1d9ad22c085b43c39e58a408e682 100644 (file)
@@ -254,7 +254,7 @@ class BaseResolverTests(unittest.TestCase):
         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