]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
Allow unicode strings for rdtype and rdclass parameters
authorBob Halley <halley@nominum.com>
Sun, 17 Oct 2010 15:34:22 +0000 (16:34 +0100)
committerBob Halley <halley@nominum.com>
Sun, 17 Oct 2010 15:34:22 +0000 (16:34 +0100)
ChangeLog
dns/dnssec.py
dns/message.py
dns/query.py
dns/rdataset.py
dns/resolver.py
dns/rrset.py
dns/update.py
dns/zone.py

index 7ddecae31a390c690787b1143c2956921356b666..a07c67b209d86c143633e12908f315809ef46037 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,8 @@
-2010-10-17  Robert Halley  <halley@nominum.com>
+2010-10-17  Bob Halley  <halley@dnspython.org>
+
+       * Various routines that took the string forms of rdata types and
+         classes did not permit the strings to be Unicode strings.
+         Thanks to Ryan Workman for reporting the issue.
 
        * dns/tsig.py: Added symbolic constants for the algorithm strings.
          E.g. you can now say dns.tsig.HMAC_MD5 instead of
index eab12ad502ca9204be7f49d5f1de80b41845e0e3..c4f41d827a32866c2daebc4480209a17b57b3d68 100644 (file)
@@ -104,7 +104,7 @@ def make_ds(name, key, algorithm):
    else:
        raise ValueError, 'unsupported algorithm "%s"' % algorithm
 
-   if isinstance(name, str):
+   if isinstance(name, (str, unicode)):
        name = dns.name.from_text(name)
    hash.update(name.canonicalize().to_wire())
    hash.update(_to_rdata(key))
index 4284f0dabdaebc7160cb93bf74518bfc49a0ff51..5ec711e1ebb68d17ceefbb02835c32b7684cec3a 100644 (file)
@@ -1039,9 +1039,9 @@ def make_query(qname, rdtype, rdclass = dns.rdataclass.IN, use_edns=None,
 
     if isinstance(qname, (str, unicode)):
         qname = dns.name.from_text(qname)
-    if isinstance(rdtype, str):
+    if isinstance(rdtype, (str, unicode)):
         rdtype = dns.rdatatype.from_text(rdtype)
-    if isinstance(rdclass, str):
+    if isinstance(rdclass, (str, unicode)):
         rdclass = dns.rdataclass.from_text(rdclass)
     m = Message()
     m.flags |= dns.flags.RD
index c023b140aff67d1d0748c87718849ebc7076d7e5..4d8379ee9cfc5608e908c9fec99496b614cd2c2e 100644 (file)
@@ -310,7 +310,7 @@ def xfr(where, zone, rdtype=dns.rdatatype.AXFR, rdclass=dns.rdataclass.IN,
 
     if isinstance(zone, (str, unicode)):
         zone = dns.name.from_text(zone)
-    if isinstance(rdtype, str):
+    if isinstance(rdtype, (str, unicode)):
         rdtype = dns.rdatatype.from_text(rdtype)
     q = dns.message.make_query(zone, rdtype, rdclass)
     if rdtype == dns.rdatatype.IXFR:
index 0af018bab5c0e715cede89f7fc7ab794e7faea9c..f556d2288b23ee7a7666fec84e813a5f0e2d12e7 100644 (file)
@@ -281,9 +281,9 @@ def from_text_list(rdclass, rdtype, ttl, text_rdatas):
     @rtype: dns.rdataset.Rdataset object
     """
 
-    if isinstance(rdclass, str):
+    if isinstance(rdclass, (str, unicode)):
         rdclass = dns.rdataclass.from_text(rdclass)
-    if isinstance(rdtype, str):
+    if isinstance(rdtype, (str, unicode)):
         rdtype = dns.rdatatype.from_text(rdtype)
     r = Rdataset(rdclass, rdtype)
     r.update_ttl(ttl)
index cd0e5f804bc70acf90416edb4bb8fc2e25b653c5..edeac014c830b3c57e2dc2b52aacd1fecaf0b5cc 100644 (file)
@@ -569,9 +569,9 @@ class Resolver(object):
 
         if isinstance(qname, (str, unicode)):
             qname = dns.name.from_text(qname, None)
-        if isinstance(rdtype, str):
+        if isinstance(rdtype, (str, unicode)):
             rdtype = dns.rdatatype.from_text(rdtype)
-        if isinstance(rdclass, str):
+        if isinstance(rdclass, (str, unicode)):
             rdclass = dns.rdataclass.from_text(rdclass)
         qnames_to_try = []
         if qname.is_absolute():
index 5a66dc6e06bae632345e5cd82f4bd19a15c160c0..21468174d4ec188851c410293112ec1d4dc8c9ce 100644 (file)
@@ -124,9 +124,9 @@ def from_text_list(name, ttl, rdclass, rdtype, text_rdatas):
 
     if isinstance(name, (str, unicode)):
         name = dns.name.from_text(name, None)
-    if isinstance(rdclass, str):
+    if isinstance(rdclass, (str, unicode)):
         rdclass = dns.rdataclass.from_text(rdclass)
-    if isinstance(rdtype, str):
+    if isinstance(rdtype, (str, unicode)):
         rdtype = dns.rdatatype.from_text(rdtype)
     r = RRset(name, rdclass, rdtype)
     r.update_ttl(ttl)
index 4c1ed625d8ccb7f4acb76513263fb3b17f55386e..e67acafec9304cd77483be0c483234f8d77b26c9 100644 (file)
@@ -152,7 +152,7 @@ class Update(dns.message.Message):
                     self._add_rr(name, 0, rd, dns.rdataclass.NONE)
             else:
                 rdtype = args.pop(0)
-                if isinstance(rdtype, str):
+                if isinstance(rdtype, (str, unicode)):
                     rdtype = dns.rdatatype.from_text(rdtype)
                 if len(args) == 0:
                     rrset = self.find_rrset(self.authority, name,
@@ -210,7 +210,7 @@ class Update(dns.message.Message):
             self._add(False, self.answer, name, *args)
         else:
             rdtype = args[0]
-            if isinstance(rdtype, str):
+            if isinstance(rdtype, (str, unicode)):
                 rdtype = dns.rdatatype.from_text(rdtype)
             rrset = self.find_rrset(self.answer, name,
                                     dns.rdataclass.ANY, rdtype,
@@ -229,7 +229,7 @@ class Update(dns.message.Message):
                                     dns.rdatatype.NONE, None,
                                     True, True)
         else:
-            if isinstance(rdtype, str):
+            if isinstance(rdtype, (str, unicode)):
                 rdtype = dns.rdatatype.from_text(rdtype)
             rrset = self.find_rrset(self.answer, name,
                                     dns.rdataclass.NONE, rdtype,
index 93c157d8f01d22f5f94eba6a5e9d503465a8554d..db5fd5df85bc48489d0ad84e2dc0fd42c0fd8969 100644 (file)
@@ -237,9 +237,9 @@ class Zone(object):
         """
 
         name = self._validate_name(name)
-        if isinstance(rdtype, str):
+        if isinstance(rdtype, (str, unicode)):
             rdtype = dns.rdatatype.from_text(rdtype)
-        if isinstance(covers, str):
+        if isinstance(covers, (str, unicode)):
             covers = dns.rdatatype.from_text(covers)
         node = self.find_node(name, create)
         return node.find_rdataset(self.rdclass, rdtype, covers, create)
@@ -300,9 +300,9 @@ class Zone(object):
         """
 
         name = self._validate_name(name)
-        if isinstance(rdtype, str):
+        if isinstance(rdtype, (str, unicode)):
             rdtype = dns.rdatatype.from_text(rdtype)
-        if isinstance(covers, str):
+        if isinstance(covers, (str, unicode)):
             covers = dns.rdatatype.from_text(covers)
         node = self.get_node(name)
         if not node is None:
@@ -363,9 +363,9 @@ class Zone(object):
         """
 
         name = self._validate_name(name)
-        if isinstance(rdtype, str):
+        if isinstance(rdtype, (str, unicode)):
             rdtype = dns.rdatatype.from_text(rdtype)
-        if isinstance(covers, str):
+        if isinstance(covers, (str, unicode)):
             covers = dns.rdatatype.from_text(covers)
         rdataset = self.nodes[name].find_rdataset(self.rdclass, rdtype, covers)
         rrset = dns.rrset.RRset(name, self.rdclass, rdtype, covers)
@@ -419,9 +419,9 @@ class Zone(object):
         @type covers: int or string
         """
 
-        if isinstance(rdtype, str):
+        if isinstance(rdtype, (str, unicode)):
             rdtype = dns.rdatatype.from_text(rdtype)
-        if isinstance(covers, str):
+        if isinstance(covers, (str, unicode)):
             covers = dns.rdatatype.from_text(covers)
         for (name, node) in self.iteritems():
             for rds in node:
@@ -442,9 +442,9 @@ class Zone(object):
         @type covers: int or string
         """
 
-        if isinstance(rdtype, str):
+        if isinstance(rdtype, (str, unicode)):
             rdtype = dns.rdatatype.from_text(rdtype)
-        if isinstance(covers, str):
+        if isinstance(covers, (str, unicode)):
             covers = dns.rdatatype.from_text(covers)
         for (name, node) in self.iteritems():
             for rds in node: