[ruby/resolv] Support a :use_ipv6 option to Resolv#initialize
When set, supports returning IPv6 results even if there is no public IPv6 address for the system. Implements Ruby Feature #14922 https://github.com/ruby/resolv/commit/09d141de38
This commit is contained in:
parent
1b7376423d
commit
87c3deacf4
@ -84,8 +84,8 @@ class Resolv
|
|||||||
##
|
##
|
||||||
# Creates a new Resolv using +resolvers+.
|
# Creates a new Resolv using +resolvers+.
|
||||||
|
|
||||||
def initialize(resolvers=[Hosts.new, DNS.new])
|
def initialize(resolvers=nil, use_ipv6: nil)
|
||||||
@resolvers = resolvers
|
@resolvers = resolvers || [Hosts.new, DNS.new(DNS::Config.default_config_hash.merge(use_ipv6: use_ipv6))]
|
||||||
end
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
@ -410,6 +410,11 @@ class Resolv
|
|||||||
end
|
end
|
||||||
|
|
||||||
def use_ipv6? # :nodoc:
|
def use_ipv6? # :nodoc:
|
||||||
|
use_ipv6 = @config.use_ipv6?
|
||||||
|
unless use_ipv6.nil?
|
||||||
|
return use_ipv6
|
||||||
|
end
|
||||||
|
|
||||||
begin
|
begin
|
||||||
list = Socket.ip_address_list
|
list = Socket.ip_address_list
|
||||||
rescue NotImplementedError
|
rescue NotImplementedError
|
||||||
@ -1008,6 +1013,7 @@ class Resolv
|
|||||||
@mutex.synchronize {
|
@mutex.synchronize {
|
||||||
unless @initialized
|
unless @initialized
|
||||||
@nameserver_port = []
|
@nameserver_port = []
|
||||||
|
@use_ipv6 = nil
|
||||||
@search = nil
|
@search = nil
|
||||||
@ndots = 1
|
@ndots = 1
|
||||||
case @config_info
|
case @config_info
|
||||||
@ -1032,6 +1038,9 @@ class Resolv
|
|||||||
if config_hash.include? :nameserver_port
|
if config_hash.include? :nameserver_port
|
||||||
@nameserver_port = config_hash[:nameserver_port].map {|ns, port| [ns, (port || Port)] }
|
@nameserver_port = config_hash[:nameserver_port].map {|ns, port| [ns, (port || Port)] }
|
||||||
end
|
end
|
||||||
|
if config_hash.include? :use_ipv6
|
||||||
|
@use_ipv6 = config_hash[:use_ipv6]
|
||||||
|
end
|
||||||
@search = config_hash[:search] if config_hash.include? :search
|
@search = config_hash[:search] if config_hash.include? :search
|
||||||
@ndots = config_hash[:ndots] if config_hash.include? :ndots
|
@ndots = config_hash[:ndots] if config_hash.include? :ndots
|
||||||
@raise_timeout_errors = config_hash[:raise_timeout_errors]
|
@raise_timeout_errors = config_hash[:raise_timeout_errors]
|
||||||
@ -1088,6 +1097,10 @@ class Resolv
|
|||||||
@nameserver_port
|
@nameserver_port
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def use_ipv6?
|
||||||
|
@use_ipv6
|
||||||
|
end
|
||||||
|
|
||||||
def generate_candidates(name)
|
def generate_candidates(name)
|
||||||
candidates = nil
|
candidates = nil
|
||||||
name = Name.create(name)
|
name = Name.create(name)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user