Cause Request.Socket.open to check /etc/hosts as well as DNS

when resolving hostnames.

During development, it can be useful to add entries to `/etc/hosts`
in the Docker container (to test ActivityPub federation, e.g.).
The Socket implementation in Request currently ignores `/etc/hosts`,
and only consults DNS. This patch changes that.
This commit is contained in:
Michael Herstine 2025-02-25 17:18:09 -08:00
parent ebde60ca82
commit 8ab8edc0da

View File

@ -267,8 +267,9 @@ class Request
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
addresses.concat(Resolv::Hosts.new().getaddresses(host))
addresses = addresses.filter { |addr| addr.is_a?(Resolv::IPv6) }.take(2) + addresses.filter { |addr| !addr.is_a?(Resolv::IPv6) }.take(2)
end
socks = []