]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
Return list of non-existent names as part of str(NXDOMAIN).
authorPetr Spacek <pspacek@redhat.com>
Thu, 19 Mar 2015 17:03:19 +0000 (18:03 +0100)
committerPetr Spacek <pspacek@redhat.com>
Wed, 25 Mar 2015 08:29:37 +0000 (09:29 +0100)
dns/resolver.py

index 6da630e47da83cdff90a1d316ab1ee32e71b53af..fbaaaca3d4e25392524ffb430fe1b84f094652e8 100644 (file)
@@ -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: