diff options
author | John Bond <b4ldr@users.noreply.github.com> | 2023-11-22 11:35:22 +0100 |
---|---|---|
committer | git <svn-admin@ruby-lang.org> | 2023-11-22 10:35:36 +0000 |
commit | 9e24d747ffbc1040d93ac53bff0c1ef0914419c8 (patch) | |
tree | d778b42446ae304ec59bd5f65b545aca6f216d92 /lib/resolv.rb | |
parent | 6391ae9ebc0b7a6668e57aa9f3c7b76ff83fab70 (diff) | |
download | ruby-9e24d747ffbc1040d93ac53bff0c1ef0914419c8.tar.gz |
[ruby/resolv] IPv6: update to_s method to be RFC5952 compliant
(https://github.com/ruby/resolv/pull/25)
* IPv6: update to_s method to be RFC5952 compliant
I noticed that the resolv library does not honour RFC 5952 Section 4.2.2.
in relation to textural representation of ipv6 addresses:
The symbol "::" MUST NOT be used to shorten just one 16-bit 0 field.
For example, the representation 2001:db8:0:1:1:1:1:1 is correct, but
2001:db8::1:1:1:1:1 is not correct.
Fixes https://github.com/ruby/resolv/pull/24
https://github.com/ruby/resolv/commit/5efcd6ed70
Co-authored-by: Sorah Fukumori <sora134@gmail.com>
Diffstat (limited to 'lib/resolv.rb')
-rw-r--r-- | lib/resolv.rb | 6 |
1 files changed, 1 insertions, 5 deletions
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: |