diff --git a/src/invidious/helpers/utils.cr b/src/invidious/helpers/utils.cr index 2e802051..5ddc8375 100644 --- a/src/invidious/helpers/utils.cr +++ b/src/invidious/helpers/utils.cr @@ -1595,7 +1595,9 @@ struct HTTPPool end def client(region = nil, &block) - pool.connection do |conn| + conn = pool.checkout + + begin if region PROXY_LIST[region]?.try &.sample(40).each do |proxy| begin @@ -1607,17 +1609,17 @@ struct HTTPPool end end - begin - response = yield conn - conn.unset_proxy - response - rescue ex - conn = HTTPClient.new(url) - conn.family = (url.host == "www.youtube.com") ? CONFIG.force_resolve : Socket::Family::UNSPEC - conn.read_timeout = 5.seconds - conn.connect_timeout = 5.seconds - yield conn - end + response = yield conn + conn.unset_proxy + response + rescue ex + conn = HTTPClient.new(url) + conn.family = (url.host == "www.youtube.com") ? CONFIG.force_resolve : Socket::Family::UNSPEC + conn.read_timeout = 5.seconds + conn.connect_timeout = 5.seconds + yield conn + ensure + pool.checkin(conn) end end