summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/invidious.cr9
-rw-r--r--src/invidious/helpers/utils.cr12
2 files changed, 13 insertions, 8 deletions
diff --git a/src/invidious.cr b/src/invidious.cr
index 147fe935..59590f22 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -4523,10 +4523,11 @@ get "/api/v1/search/suggestions" do |env|
query ||= ""
begin
- response = QUIC::Client.get(
- "https://suggestqueries.google.com/complete/search?hl=en&gl=#{region}&client=youtube&ds=yt&q=#{URI.encode_www_form(query)}&callback=suggestCallback"
- ).body
-
+ client = QUIC::Client.new("suggestqueries.google.com")
+ client.family = CONFIG.force_resolve || Socket::Family::INET
+ client.family = Socket::Family::INET if client.family == Socket::Family::UNSPEC
+ response = client.get("/complete/search?hl=en&gl=#{region}&client=youtube&ds=yt&q=#{URI.encode_www_form(query)}&callback=suggestCallback").body
+
body = response[35..-2]
body = JSON.parse(body).as_a
suggestions = body[1].as_a[0..-2]
diff --git a/src/invidious/helpers/utils.cr b/src/invidious/helpers/utils.cr
index 53c18dd5..6fcfa8d2 100644
--- a/src/invidious/helpers/utils.cr
+++ b/src/invidious/helpers/utils.cr
@@ -31,8 +31,10 @@ struct QUICPool
begin
response = yield conn
rescue ex
- conn.destroy_engine
+ conn.close
conn = QUIC::Client.new(url)
+ conn.family = (url.host == "www.youtube.com") ? CONFIG.force_resolve : Socket::Family::INET
+ conn.family = Socket::Family::INET if conn.family == Socket::Family::UNSPEC
conn.before_request { |r| add_yt_headers(r) } if url.host == "www.youtube.com"
response = yield conn
ensure
@@ -45,9 +47,11 @@ struct QUICPool
private def build_pool
ConnectionPool(QUIC::Client).new(capacity: capacity, timeout: timeout) do
- client = QUIC::Client.new(url)
- client.before_request { |r| add_yt_headers(r) } if url.host == "www.youtube.com"
- client
+ conn = QUIC::Client.new(url)
+ conn.family = (url.host == "www.youtube.com") ? CONFIG.force_resolve : Socket::Family::INET
+ conn.family = Socket::Family::INET if conn.family == Socket::Family::UNSPEC
+ conn.before_request { |r| add_yt_headers(r) } if url.host == "www.youtube.com"
+ conn
end
end
end