summaryrefslogtreecommitdiff
path: root/dns/resolver.py
diff options
context:
space:
mode:
Diffstat (limited to 'dns/resolver.py')
-rw-r--r--dns/resolver.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/dns/resolver.py b/dns/resolver.py
index 97fda1c..21592bc 100644
--- a/dns/resolver.py
+++ b/dns/resolver.py
@@ -41,6 +41,10 @@ class NXDOMAIN(dns.exception.DNSException):
"""The query name does not exist."""
pass
+class YXDOMAIN(dns.exception.DNSException):
+ """The query name is too long after DNAME substitution."""
+ pass
+
# The definition of the Timeout exception has moved from here to the
# dns.exception module. We keep dns.resolver.Timeout defined for
# backwards compatibility.
@@ -714,6 +718,7 @@ class Resolver(object):
@rtype: dns.resolver.Answer instance
@raises Timeout: no answers could be found in the specified lifetime
@raises NXDOMAIN: the query name does not exist
+ @raises YXDOMAIN: the query name is too long after DNAME substitution
@raises NoAnswer: the response did not contain an answer and
raise_on_no_answer is True.
@raises NoNameservers: no non-broken nameservers are available to
@@ -818,6 +823,8 @@ class Resolver(object):
response = None
continue
rcode = response.rcode()
+ if rcode == dns.rcode.YXDOMAIN:
+ raise YXDOMAIN
if rcode == dns.rcode.NOERROR or \
rcode == dns.rcode.NXDOMAIN:
break