From d9abf6a4bd59bf579067518d4538a9140708ebdb Mon Sep 17 00:00:00 2001 From: Petr Spacek Date: Thu, 19 Mar 2015 18:03:19 +0100 Subject: [PATCH] Return list of non-existent names as part of str(NXDOMAIN). --- dns/resolver.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/dns/resolver.py b/dns/resolver.py index 31f44fe1..7e33d1b4 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: -- 2.47.3