diff options
author | Takeshi Umeda <noel.yoshiba@gmail.com> | 2020-06-09 17:26:58 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-09 10:26:58 +0200 |
commit | d890abfcab076f5df4eafb75397435d32c641e20 (patch) | |
tree | b492373b83e02f46f41259826433163d42f6936c /app/helpers | |
parent | 72a7cfaa395bbddabd0f0a712165fd7babf5d58c (diff) |
Fix performance of follow import (#13836)
Diffstat (limited to 'app/helpers')
-rw-r--r-- | app/helpers/webfinger_helper.rb | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/app/helpers/webfinger_helper.rb b/app/helpers/webfinger_helper.rb index 70c493210..ab7ca4698 100644 --- a/app/helpers/webfinger_helper.rb +++ b/app/helpers/webfinger_helper.rb @@ -1,5 +1,16 @@ # frozen_string_literal: true +# Monkey-patch on monkey-patch. +# Because it conflicts with the request.rb patch. +class HTTP::Timeout::PerOperationOriginal < HTTP::Timeout::PerOperation + def connect(socket_class, host, port, nodelay = false) + ::Timeout.timeout(@connect_timeout, HTTP::TimeoutError) do + @socket = socket_class.open(host, port) + @socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1) if nodelay + end + end +end + module WebfingerHelper def webfinger!(uri) hidden_service_uri = /\.(onion|i2p)(:\d+)?$/.match(uri) @@ -12,6 +23,14 @@ module WebfingerHelper headers: { 'User-Agent': Mastodon::Version.user_agent, }, + + timeout_class: HTTP::Timeout::PerOperationOriginal, + + timeout_options: { + write_timeout: 10, + connect_timeout: 5, + read_timeout: 10, + }, } Goldfinger::Client.new(uri, opts.merge(Rails.configuration.x.http_client_proxy)).finger |