summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--dns/ipv6.py2
-rw-r--r--tests/ntoaaton.py6
3 files changed, 14 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index d3eda06..ef4ab5f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2013-04-26 Bob Halley <halley@dnspython.org>
+
+ * dns/ipv6.py (inet_ntoa): We now comply with RFC 5952 section
+ 5.2.2, by *not* using the :: syntax to shorten just one 16-bit
+ field. Thanks to David Waitzman for reporting the bug and
+ suggesting the fix.
+
2012-09-25 Sean Leach
* added set_flags() method to dns.resolver.Resolver
diff --git a/dns/ipv6.py b/dns/ipv6.py
index 69db34a..1ab00da 100644
--- a/dns/ipv6.py
+++ b/dns/ipv6.py
@@ -72,7 +72,7 @@ def inet_ntoa(address):
if current_len > best_len:
best_start = start
best_len = current_len
- if best_len > 0:
+ if best_len > 1:
if best_start == 0 and \
(best_len == 6 or
best_len == 5 and chunks[5] == 'ffff'):
diff --git a/tests/ntoaaton.py b/tests/ntoaaton.py
index 9d8bedd..e93de2d 100644
--- a/tests/ntoaaton.py
+++ b/tests/ntoaaton.py
@@ -193,5 +193,11 @@ class NtoAAtoNTestCase(unittest.TestCase):
for addr in addrs:
self.failUnlessRaises(dns.exception.SyntaxError, make_bad(addr))
+ def test_rfc5952_section_4_2_2(self):
+ addr = '2001:db8:0:1:1:1:1:1'
+ b1 = aton6(addr)
+ t1 = ntoa6(b1)
+ self.failUnless(t1 == addr)
+
if __name__ == '__main__':
unittest.main()