summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Halley <halley@nominum.com>2010-10-17 16:34:22 +0100
committerBob Halley <halley@nominum.com>2010-10-17 16:34:22 +0100
commitf437b7848886eee0d30a72e6e93cb377aae90e5a (patch)
tree482f1f80b29904805a0b5b2dafc3297d87aa2c00
parent8e222ad86c4aea7adb4c165953852fccb5e939ba (diff)
downloaddnspython-f437b7848886eee0d30a72e6e93cb377aae90e5a.tar.gz
Allow unicode strings for rdtype and rdclass parameters
-rw-r--r--ChangeLog6
-rw-r--r--dns/dnssec.py2
-rw-r--r--dns/message.py4
-rw-r--r--dns/query.py2
-rw-r--r--dns/rdataset.py4
-rw-r--r--dns/resolver.py4
-rw-r--r--dns/rrset.py4
-rw-r--r--dns/update.py6
-rw-r--r--dns/zone.py20
9 files changed, 28 insertions, 24 deletions
diff --git a/ChangeLog b/ChangeLog
index 7ddecae..a07c67b 100644
--- 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
diff --git a/dns/dnssec.py b/dns/dnssec.py
index eab12ad..c4f41d8 100644
--- a/dns/dnssec.py
+++ b/dns/dnssec.py
@@ -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))
diff --git a/dns/message.py b/dns/message.py
index 4284f0d..5ec711e 100644
--- a/dns/message.py
+++ b/dns/message.py
@@ -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
diff --git a/dns/query.py b/dns/query.py
index c023b14..4d8379e 100644
--- a/dns/query.py
+++ b/dns/query.py
@@ -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:
diff --git a/dns/rdataset.py b/dns/rdataset.py
index 0af018b..f556d22 100644
--- a/dns/rdataset.py
+++ b/dns/rdataset.py
@@ -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)
diff --git a/dns/resolver.py b/dns/resolver.py
index cd0e5f8..edeac01 100644
--- a/dns/resolver.py
+++ b/dns/resolver.py
@@ -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():
diff --git a/dns/rrset.py b/dns/rrset.py
index 5a66dc6..2146817 100644
--- a/dns/rrset.py
+++ b/dns/rrset.py
@@ -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)
diff --git a/dns/update.py b/dns/update.py
index 4c1ed62..e67acaf 100644
--- a/dns/update.py
+++ b/dns/update.py
@@ -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,
diff --git a/dns/zone.py b/dns/zone.py
index 93c157d..db5fd5d 100644
--- a/dns/zone.py
+++ b/dns/zone.py
@@ -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: