From 7719de56656a014856d15abb9c6371977bd24a3d Mon Sep 17 00:00:00 2001 From: Kouhai Date: Mon, 12 Feb 2024 02:35:47 -0800 Subject: [PATCH] th: etc etc host host s s --- app/lib/request.rb | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/app/lib/request.rb b/app/lib/request.rb index 8d4120868d..f8753fb191 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -261,10 +261,19 @@ class Request begin addresses = [IPAddr.new(host)] rescue IPAddr::InvalidAddressError - 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) + 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 + # try /etc/hosts file + # https://github.com/mastodon/mastodon/issues/9436 + Resolv::Hosts.open do |dns| + 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 end end