From 8ab8edc0da6fb26ffbabd142270fa355a182d1ca Mon Sep 17 00:00:00 2001 From: Michael Herstine Date: Tue, 25 Feb 2025 17:18:09 -0800 Subject: [PATCH] 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. --- app/lib/request.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/lib/request.rb b/app/lib/request.rb index 8fda86f0e8..cf33897bfc 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -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 = []