From cbb27b0f346cf0765b15a13bbacd9745abd3dce1 Mon Sep 17 00:00:00 2001 From: sergiobuilds Date: Wed, 12 Aug 2026 02:37:09 +0900 Subject: [PATCH] Invalidate companion client after stream failure --- src/invidious/routes/companion.cr | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/invidious/routes/companion.cr b/src/invidious/routes/companion.cr index 034240e2..a22d4692 100644 --- a/src/invidious/routes/companion.cr +++ b/src/invidious/routes/companion.cr @@ -9,7 +9,7 @@ module Invidious::Routes::Companion begin COMPANION_POOL.client do |wrapper| wrapper.client.get(url, env.request.headers) do |resp| - return self.proxy_companion(env, resp) + return self.proxy_companion(env, resp, wrapper) end end rescue ex @@ -29,7 +29,7 @@ module Invidious::Routes::Companion begin COMPANION_POOL.client do |wrapper| wrapper.client.post(url, env.request.headers, env.request.body) do |resp| - return self.proxy_companion(env, resp) + return self.proxy_companion(env, resp, wrapper) end end rescue ex @@ -48,7 +48,7 @@ module Invidious::Routes::Companion begin COMPANION_POOL.client do |wrapper| wrapper.client.options(url, env.request.headers) do |resp| - return self.proxy_companion(env, resp) + return self.proxy_companion(env, resp, wrapper) end end rescue ex @@ -58,7 +58,7 @@ module Invidious::Routes::Companion end end - private def self.proxy_companion(env, response) + private def self.proxy_companion(env, response, wrapper) env.response.status_code = response.status_code response.headers.each do |key, value| env.response.headers[key] = value @@ -68,6 +68,7 @@ module Invidious::Routes::Companion return IO.copy response.body_io, env.response rescue ex LOGGER.warn("Companion response stream failed: #{ex.class}") + wrapper.close env.response.close unless env.response.closed? return end