Re-use custom socket class for FASP requests (#37925)

This commit is contained in:
David Roetzel
2026-02-20 15:27:50 +01:00
parent e8045de79b
commit 17c04fe04b
3 changed files with 20 additions and 2 deletions

View File

@@ -29,7 +29,7 @@ class Fasp::Request
response = HTTP
.headers(headers)
.use(http_signature: { key:, covered_components: COVERED_COMPONENTS })
.send(verb, url, body:)
.send(verb, url, body:, socket_class: ::Request::Socket)
validate!(response)
@provider.delivery_failure_tracker.track_success!

View File

@@ -349,5 +349,5 @@ class Request
end
end
private_constant :ClientLimit, :Socket, :ProxySocket
private_constant :ClientLimit
end

View File

@@ -78,6 +78,24 @@ RSpec.describe Fasp::Request do
expect(provider.delivery_failure_tracker.failures).to eq 1
end
end
context 'when the provider host name resolves to a private address' do
around do |example|
WebMock.disable!
example.run
WebMock.enable!
end
it 'raises Mastodon::ValidationError' do
resolver = instance_double(Resolv::DNS)
allow(resolver).to receive(:getaddresses).with('reqprov.example.com').and_return(%w(0.0.0.0 2001:db8::face))
allow(resolver).to receive(:timeouts=).and_return(nil)
allow(Resolv::DNS).to receive(:open).and_yield(resolver)
expect { subject.send(method, '/test_path') }.to raise_error(Mastodon::ValidationError)
end
end
end
describe '#get' do