Fix broken connections in pool

This commit is contained in:
Omar Roth
2019-10-25 23:06:08 -04:00
parent 7f8746fcd4
commit 202de1436d

View File

@@ -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