From 995a46caade4c8bbaaa19bc42fcf75c8956fc885 Mon Sep 17 00:00:00 2001 From: Bob Halley Date: Mon, 30 May 2016 16:34:32 -0700 Subject: [PATCH] revert prior patch as things are more messed up than I thought! --- dns/ipv6.py | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/dns/ipv6.py b/dns/ipv6.py index 4622ba7a..ee991e85 100644 --- a/dns/ipv6.py +++ b/dns/ipv6.py @@ -91,9 +91,9 @@ def inet_ntoa(address): hex = b':'.join(chunks) return hex -_v4_ending = re.compile('(.*):(\d+\.\d+\.\d+\.\d+)$') -_colon_colon_start = re.compile('::.*') -_colon_colon_end = re.compile('.*::$') +_v4_ending = re.compile(b'(.*):(\d+\.\d+\.\d+\.\d+)$') +_colon_colon_start = re.compile(b'::.*') +_colon_colon_end = re.compile(b'.*::$') def inet_aton(text): """Convert a text format IPv6 address into network format. @@ -104,8 +104,14 @@ def inet_aton(text): @raises dns.exception.SyntaxError: the text was not properly formatted """ - if text == '::': - text = '0::' + # + # Our aim here is not something fast; we just want something that works. + # + if not isinstance(text, binary_type): + text = text.encode() + + if text == b'::': + text = b'0::' # # Get rid of the icky dot-quad syntax if we have it. # @@ -128,29 +134,29 @@ def inet_aton(text): # # Now canonicalize into 8 chunks of 4 hex digits each # - chunks = text.split(':') + chunks = text.split(b':') l = len(chunks) if l > 8: raise dns.exception.SyntaxError seen_empty = False canonical = [] for c in chunks: - if c == '': + if c == b'': if seen_empty: raise dns.exception.SyntaxError seen_empty = True for i in xrange(0, 8 - l + 1): - canonical.append('0000') + canonical.append(b'0000') else: lc = len(c) if lc > 4: raise dns.exception.SyntaxError if lc != 4: - c = ('0' * (4 - lc)) + c + c = (b'0' * (4 - lc)) + c canonical.append(c) if l < 8 and not seen_empty: raise dns.exception.SyntaxError - text = ''.join(canonical) + text = b''.join(canonical) # # Finally we can go to binary. -- 2.47.3