summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavid Rodríguez <[email protected]>2024-11-11 20:41:12 +0100
committerHiroshi SHIBATA <[email protected]>2024-11-14 11:21:39 +0900
commit0ef7d59ef2230db26162c2b17338cfdda7abc9e8 ()
treee40f74b9ff16502b4779dac7c67d12d4ab0c16c2 /lib
parent26036b1248598bd0788681f7902b5874a16a7736 (diff)
Update vendored resolv to 0.5.0
-rw-r--r--lib/rubygems/vendor/resolv/lib/resolv.rb50
1 files changed, 30 insertions, 20 deletions
@@ -37,7 +37,7 @@ end
class Gem::Resolv
- VERSION = "0.4.0"
##
# Looks up the first IP address for +name+.
@@ -396,13 +396,15 @@ class Gem::Resolv
# be a Gem::Resolv::IPv4 or Gem::Resolv::IPv6
def each_address(name)
- each_resource(name, Resource::IN::A) {|resource| yield resource.address}
if use_ipv6?
each_resource(name, Resource::IN::AAAA) {|resource| yield resource.address}
end
end
def use_ipv6? # :nodoc:
use_ipv6 = @config.use_ipv6?
unless use_ipv6.nil?
return use_ipv6
@@ -513,35 +515,40 @@ class Gem::Resolv
def fetch_resource(name, typeclass)
lazy_initialize
- begin
- requester = make_udp_requester
rescue Errno::EACCES
# fall back to TCP
end
senders = {}
begin
- @config.resolv(name) {|candidate, tout, nameserver, port|
- requester ||= make_tcp_requester(nameserver, port)
msg = Message.new
msg.rd = 1
msg.add_question(candidate, typeclass)
- unless sender = senders[[candidate, nameserver, port]]
sender = requester.sender(msg, candidate, nameserver, port)
next if !sender
- senders[[candidate, nameserver, port]] = sender
end
reply, reply_name = requester.request(sender, tout)
case reply.rcode
when RCode::NoError
if reply.tc == 1 and not Requester::TCP === requester
- requester.close
# Retry via TCP:
- requester = make_tcp_requester(nameserver, port)
- senders = {}
- # This will use TCP for all remaining candidates (assuming the
- # current candidate does not already respond successfully via
- # TCP). This makes sense because we already know the full
- # response will not fit in an untruncated UDP packet.
redo
else
yield(reply, reply_name)
@@ -552,9 +559,10 @@ class Gem::Resolv
else
raise Config::OtherResolvError.new(reply_name.to_s)
end
- }
ensure
- requester&.close
end
end
@@ -569,6 +577,11 @@ class Gem::Resolv
def make_tcp_requester(host, port) # :nodoc:
return Requester::TCP.new(host, port)
end
def extract_resources(msg, name, typeclass) # :nodoc:
@@ -1800,7 +1813,6 @@ class Gem::Resolv
end
end
-
##
# Base class for SvcParam. [RFC9460]
@@ -2499,7 +2511,6 @@ class Gem::Resolv
attr_reader :altitude
-
def encode_rdata(msg) # :nodoc:
msg.put_bytes(@version)
msg.put_bytes(@ssize.scalar)
@@ -3439,4 +3450,3 @@ class Gem::Resolv
AddressRegex = /(?:#{IPv4::Regex})|(?:#{IPv6::Regex})/
end
-