Compare commits

..

2 commits

Author SHA1 Message Date
Kouhai
0d1e55d566
th: smile sweet sadistic surprise service
should've just hardcoded instead but noooooooooooo

"needs to be decent"
2024-02-13 16:59:34 +09:00
Kouhai
6a5351ede0
th: etc etc host host s s 2024-02-13 16:59:21 +09:00

View file

@ -261,9 +261,28 @@ class Request
begin
addresses = [IPAddr.new(host)]
rescue IPAddr::InvalidAddressError
Resolv::DNS.open do |dns|
dns.timeouts = 5
addresses = dns.getaddresses(host)
begin
Resolv::DNS.open do |dns|
dns.timeouts = 5
addresses = dns.getaddresses(host)
addresses = addresses.filter { |addr| addr.is_a?(Resolv::IPv6) }.take(2) + addresses.filter { |addr| !addr.is_a?(Resolv::IPv6) }.take(2)
end
rescue ResolvError
end
if addresses.empty?
# try /etc/hosts file
# https://github.com/mastodon/mastodon/issues/9436
Resolv::Hosts.new.each_address(host) do |address|
case address
when Resolv::IPv4::Regex
addresses << Resolv::IPv4.create(address)
when Resolv::IPv6::Regex
addresses << Resolv::IPv6.create(address)
else
raise ResolvError.new("cannot interpret as address: #{address}")
end
end
addresses = addresses.filter { |addr| addr.is_a?(Resolv::IPv6) }.take(2) + addresses.filter { |addr| !addr.is_a?(Resolv::IPv6) }.take(2)
end
end