Add parameter to disable force_resolve
in make_client
(#4335)
* Add option to disable force_resolve in make_client Some websites such as archive.org and textcaptcha.com does not support IPv6 and as such requests fail when Invidious requests with IPv6 to those services. * Reenable force_resolve on pubsub subcribe request * Make force_resolve false by default in make_client * Remove missed explicit force_resolve=false
This commit is contained in:
parent
b16f66ef00
commit
1c0b4205d4
2 changed files with 14 additions and 9 deletions
|
@ -42,7 +42,7 @@ module Invidious::Routes::VideoPlayback
|
|||
headers["Range"] = "bytes=#{range_for_head}"
|
||||
end
|
||||
|
||||
client = make_client(URI.parse(host), region)
|
||||
client = make_client(URI.parse(host), region, force_resolve = true)
|
||||
response = HTTP::Client::Response.new(500)
|
||||
error = ""
|
||||
5.times do
|
||||
|
@ -57,7 +57,7 @@ module Invidious::Routes::VideoPlayback
|
|||
if new_host != host
|
||||
host = new_host
|
||||
client.close
|
||||
client = make_client(URI.parse(new_host), region)
|
||||
client = make_client(URI.parse(new_host), region, force_resolve = true)
|
||||
end
|
||||
|
||||
url = "#{location.request_target}&host=#{location.host}#{region ? "®ion=#{region}" : ""}"
|
||||
|
@ -71,7 +71,7 @@ module Invidious::Routes::VideoPlayback
|
|||
fvip = "3"
|
||||
|
||||
host = "https://r#{fvip}---#{mn}.googlevideo.com"
|
||||
client = make_client(URI.parse(host), region)
|
||||
client = make_client(URI.parse(host), region, force_resolve = true)
|
||||
rescue ex
|
||||
error = ex.message
|
||||
end
|
||||
|
@ -196,7 +196,7 @@ module Invidious::Routes::VideoPlayback
|
|||
break
|
||||
else
|
||||
client.close
|
||||
client = make_client(URI.parse(host), region)
|
||||
client = make_client(URI.parse(host), region, force_resolve = true)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ struct YoutubeConnectionPool
|
|||
|
||||
def client(region = nil, &block)
|
||||
if region
|
||||
conn = make_client(url, region)
|
||||
conn = make_client(url, region, force_resolve = true)
|
||||
response = yield conn
|
||||
else
|
||||
conn = pool.checkout
|
||||
|
@ -59,9 +59,14 @@ struct YoutubeConnectionPool
|
|||
end
|
||||
end
|
||||
|
||||
def make_client(url : URI, region = nil)
|
||||
def make_client(url : URI, region = nil, force_resolve : Bool = false)
|
||||
client = HTTPClient.new(url, OpenSSL::SSL::Context::Client.insecure)
|
||||
client.family = CONFIG.force_resolve
|
||||
|
||||
# Some services do not support IPv6.
|
||||
if force_resolve
|
||||
client.family = CONFIG.force_resolve
|
||||
end
|
||||
|
||||
client.before_request { |r| add_yt_headers(r) } if url.host == "www.youtube.com"
|
||||
client.read_timeout = 10.seconds
|
||||
client.connect_timeout = 10.seconds
|
||||
|
@ -80,8 +85,8 @@ def make_client(url : URI, region = nil)
|
|||
return client
|
||||
end
|
||||
|
||||
def make_client(url : URI, region = nil, &block)
|
||||
client = make_client(url, region)
|
||||
def make_client(url : URI, region = nil, force_resolve : Bool = false, &block)
|
||||
client = make_client(url, region, force_resolve)
|
||||
begin
|
||||
yield client
|
||||
ensure
|
||||
|
|
Loading…
Reference in a new issue