2020-05-10 12:41:43 +03:00
# frozen_string_literal: true
2020-06-09 11:26:58 +03:00
# 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
2020-05-10 12:41:43 +03:00
module WebfingerHelper
def webfinger! ( uri )
hidden_service_uri = / \ .(onion|i2p)(: \ d+)?$ / . match ( uri )
raise Mastodon :: HostValidationError , 'Instance does not support hidden service connections' if ! Rails . configuration . x . access_to_hidden_service && hidden_service_uri
opts = {
ssl : ! hidden_service_uri ,
headers : {
'User-Agent' : Mastodon :: Version . user_agent ,
} ,
2020-06-09 11:26:58 +03:00
timeout_class : HTTP :: Timeout :: PerOperationOriginal ,
timeout_options : {
write_timeout : 10 ,
connect_timeout : 5 ,
read_timeout : 10 ,
} ,
2020-05-10 12:41:43 +03:00
}
Goldfinger :: Client . new ( uri , opts . merge ( Rails . configuration . x . http_client_proxy ) ) . finger
end
end