import dns.inet
import dns.name
import dns.message
+import dns.rcode
import dns.rdataclass
import dns.rdatatype
from ._compat import long, string_types
"""A DNS query response does not respond to the question asked."""
+class TransferError(dns.exception.DNSException):
+ """A zone transfer response got a non-zero rcode."""
+
+ def __init__(self, rcode):
+ message = 'Zone transfer error: %s' % dns.rcode.to_text(rcode)
+ super(TransferError, self).__init__(message)
+ self.rcode = rcode
+
+
def _compute_expiration(timeout):
if timeout is None:
return None
*keyalgorithm*, a ``dns.name.Name`` or ``text``, the TSIG algorithm to use.
+ Raises on errors, and so does the generator.
+
Returns a generator of ``dns.message.Message`` objects.
"""
xfr=True, origin=origin, tsig_ctx=tsig_ctx,
multi=True, first=first,
one_rr_per_rrset=is_ixfr)
+ rcode = r.rcode()
+ if rcode != dns.rcode.NOERROR:
+ raise TransferError(rcode)
tsig_ctx = r.tsig_ctx
first = False
answer_index = 0
.. autoexception:: dns.query.BadResponse
.. autoexception:: dns.query.UnexpectedSource
+.. autoexception:: dns.query.TransferError
dns.rcode Exceptions