diff --git a/lib/resolv.rb b/lib/resolv.rb index 47c4ef6b3b..0db6cc5c59 100644 --- a/lib/resolv.rb +++ b/lib/resolv.rb @@ -2560,11 +2560,7 @@ class Resolv attr_reader :address def to_s # :nodoc: - address = sprintf("%x:%x:%x:%x:%x:%x:%x:%x", *@address.unpack("nnnnnnnn")) - unless address.sub!(/(^|:)0(:0)+(:|$)/, '::') - address.sub!(/(^|:)0(:|$)/, '::') - end - return address + sprintf("%x:%x:%x:%x:%x:%x:%x:%x", *@address.unpack("nnnnnnnn")).sub(/(^|:)0(:0)+(:|$)/, '::') end def inspect # :nodoc: diff --git a/test/resolv/test_dns.rb b/test/resolv/test_dns.rb index 9d243bbf50..d9db8408fd 100644 --- a/test/resolv/test_dns.rb +++ b/test/resolv/test_dns.rb @@ -374,7 +374,8 @@ class TestResolvDNS < Test::Unit::TestCase ["2001:db8::1", "2001:db8::0:1"], ["::", "0:0:0:0:0:0:0:0"], ["2001::", "2001::0"], - ["2001:db8::1:1:1:1:1", "2001:db8:0:1:1:1:1:1"], + ["2001:db8:0:1:1:1:1:1", "2001:db8:0:1:1:1:1:1"], # RFC 5952 Section 4.2.2. + ["2001:db8::1:1:1:1", "2001:db8:0:0:1:1:1:1"], ["1::1:0:0:0:1", "1:0:0:1:0:0:0:1"], ["1::1:0:0:1", "1:0:0:0:1:0:0:1"], ]