summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetr Spacek <pspacek@redhat.com>2015-03-19 18:03:19 +0100
committerPetr Viktorin <pviktori@redhat.com>2015-05-21 14:25:12 +0200
commitd9abf6a4bd59bf579067518d4538a9140708ebdb (patch)
treeb623bd6642c01c1eabf3d548075c05bf4b3441b7
parent33f4ef8257950891690af5b648c4e58b4850e0df (diff)
downloaddnspython-d9abf6a4bd59bf579067518d4538a9140708ebdb.tar.gz
Return list of non-existent names as part of str(NXDOMAIN).
-rw-r--r--dns/resolver.py17
1 files changed, 16 insertions, 1 deletions
diff --git a/dns/resolver.py b/dns/resolver.py
index 31f44fe..7e33d1b 100644
--- a/dns/resolver.py
+++ b/dns/resolver.py
@@ -48,6 +48,21 @@ if sys.platform == 'win32':
class NXDOMAIN(dns.exception.DNSException):
"""The DNS query name does not exist."""
+ supp_kwargs = set(['qname'])
+
+ def __str__(self):
+ if not 'qname' in self.kwargs:
+ return super(NXDOMAIN, self).__str__()
+
+ qname = self.kwargs['qname']
+ msg = self.__doc__[:-1]
+ if isinstance(qname, (list, set)):
+ if len(qname) > 1:
+ msg = 'None of DNS query names exist'
+ qname = list(map(str, qname))
+ else:
+ qname = qname[0]
+ return "%s: %s" % (msg, (str(qname)))
class YXDOMAIN(dns.exception.DNSException):
"""The DNS query name is too long after DNAME substitution."""
@@ -932,7 +947,7 @@ class Resolver(object):
all_nxdomain = False
break
if all_nxdomain:
- raise NXDOMAIN
+ raise NXDOMAIN(qname=qnames_to_try)
answer = Answer(qname, rdtype, rdclass, response,
raise_on_no_answer)
if self.cache: