mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[ruby/ipaddr] Fix include? and ipv4_mapped to allow drb tests to pass
include? should return false if comparing an IPv4 address to an IPv6 address. ipv4_mapped needs to set the correct netmask on the mapped addresses. https://github.com/ruby/ipaddr/commit/da22ef8e6c
This commit is contained in:
parent
9a321dd9b2
commit
391d6ab4f7
1 changed files with 6 additions and 2 deletions
|
@ -173,8 +173,10 @@ class IPAddr
|
|||
# p net1.include?(net4) #=> false
|
||||
# p net4.include?(net1) #=> true
|
||||
def include?(other)
|
||||
other = coerce_other(other)
|
||||
return false unless other.family == family
|
||||
range = to_range
|
||||
other = coerce_other(other).to_range
|
||||
other = other.to_range
|
||||
range.begin <= other.begin && range.end >= other.end
|
||||
end
|
||||
alias === include?
|
||||
|
@ -316,7 +318,9 @@ class IPAddr
|
|||
if !ipv4?
|
||||
raise InvalidAddressError, "not an IPv4 address: #{@addr}"
|
||||
end
|
||||
return self.clone.set(@addr | 0xffff00000000, Socket::AF_INET6)
|
||||
clone = self.clone.set(@addr | 0xffff00000000, Socket::AF_INET6)
|
||||
clone.instance_variable_set(:@mask_addr, @mask_addr | 0xffffffffffffffffffffffff00000000)
|
||||
clone
|
||||
end
|
||||
|
||||
# Returns a new ipaddr built by converting the native IPv4 address
|
||||
|
|
Loading…
Reference in a new issue