From: Petr Spacek Date: Thu, 19 Mar 2015 17:03:19 +0000 (+0100) Subject: Return list of non-existent names as part of str(NXDOMAIN). X-Git-Tag: v1.13.0~27^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a4dac4fac5799d1b29580d2e8a9134c8217e8ecd;p=thirdparty%2Fdnspython.git Return list of non-existent names as part of str(NXDOMAIN). --- diff --git a/dns/resolver.py b/dns/resolver.py index 6da630e4..fbaaaca3 100644 --- a/dns/resolver.py +++ b/dns/resolver.py @@ -45,6 +45,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.""" @@ -934,7 +949,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: