add check_origin parameter to dns.zone.from_xfr()
authorBob Halley <halley@dnspython.org>
Sat, 7 Apr 2012 21:15:56 +0000 (22:15 +0100)
committerBob Halley <halley@dnspython.org>
Sat, 7 Apr 2012 21:15:56 +0000 (22:15 +0100)
ChangeLog
dns/zone.py

index 46064a5f925a0c8ba345bc81a108f560822b5f17..5ab983875db9bd0316daa4fed58f4895f44261d1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
+
 2012-04-07  Bob Halley  <halley@dnspython.org>
 
+       * dns/zone.py (from_xfr): dns.zone.from_xfr() now takes a
+         'check_origin' parameter which defaults to True.  If set to
+         False, then dnspython will not make origin checks on the zone.
+         Thanks to Carlos Perez for the report.
+
        * dns/rdtypes/ANY/SSHFP.py (SSHFP.from_text): Allow whitespace in
          the text string.  Thanks to Jan Andres for the report and the
          patch.
index 67c952d3cc51016d1fc1ad89fb4a6ca2f9c2c153..ac16ad35363c870a13e94fbed6664b77d8d031cc 100644 (file)
@@ -817,7 +817,7 @@ def from_file(f, origin = None, rdclass = dns.rdataclass.IN,
             f.close()
     return z
 
-def from_xfr(xfr, zone_factory=Zone, relativize=True):
+def from_xfr(xfr, zone_factory=Zone, relativize=True, check_origin=True):
     """Convert the output of a zone transfer generator into a zone object.
 
     @param xfr: The xfr generator
@@ -826,6 +826,9 @@ def from_xfr(xfr, zone_factory=Zone, relativize=True):
     It is essential that the relativize setting matches the one specified
     to dns.query.xfr().
     @type relativize: bool
+    @param check_origin: should sanity checks of the origin node be done?
+    The default is True.
+    @type check_origin: bool
     @raises dns.zone.NoSOA: No SOA RR was found at the zone origin
     @raises dns.zone.NoNS: No NS RRset was found at the zone origin
     @rtype: dns.zone.Zone object
@@ -851,5 +854,6 @@ def from_xfr(xfr, zone_factory=Zone, relativize=True):
             for rd in rrset:
                 rd.choose_relativity(z.origin, relativize)
                 zrds.add(rd)
-    z.check_origin()
+    if check_origin:
+        z.check_origin()
     return z