mirror of
				https://gitea.invidious.io/iv-org/invidious
				synced 2025-06-05 23:29:12 +02:00 
			
		
		
		
	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:
		| @@ -42,7 +42,7 @@ module Invidious::Routes::VideoPlayback | |||||||
|       headers["Range"] = "bytes=#{range_for_head}" |       headers["Range"] = "bytes=#{range_for_head}" | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     client = make_client(URI.parse(host), region) |     client = make_client(URI.parse(host), region, force_resolve = true) | ||||||
|     response = HTTP::Client::Response.new(500) |     response = HTTP::Client::Response.new(500) | ||||||
|     error = "" |     error = "" | ||||||
|     5.times do |     5.times do | ||||||
| @@ -57,7 +57,7 @@ module Invidious::Routes::VideoPlayback | |||||||
|           if new_host != host |           if new_host != host | ||||||
|             host = new_host |             host = new_host | ||||||
|             client.close |             client.close | ||||||
|             client = make_client(URI.parse(new_host), region) |             client = make_client(URI.parse(new_host), region, force_resolve = true) | ||||||
|           end |           end | ||||||
|  |  | ||||||
|           url = "#{location.request_target}&host=#{location.host}#{region ? "®ion=#{region}" : ""}" |           url = "#{location.request_target}&host=#{location.host}#{region ? "®ion=#{region}" : ""}" | ||||||
| @@ -71,7 +71,7 @@ module Invidious::Routes::VideoPlayback | |||||||
|         fvip = "3" |         fvip = "3" | ||||||
|  |  | ||||||
|         host = "https://r#{fvip}---#{mn}.googlevideo.com" |         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 |       rescue ex | ||||||
|         error = ex.message |         error = ex.message | ||||||
|       end |       end | ||||||
| @@ -196,7 +196,7 @@ module Invidious::Routes::VideoPlayback | |||||||
|             break |             break | ||||||
|           else |           else | ||||||
|             client.close |             client.close | ||||||
|             client = make_client(URI.parse(host), region) |             client = make_client(URI.parse(host), region, force_resolve = true) | ||||||
|           end |           end | ||||||
|         end |         end | ||||||
|  |  | ||||||
|   | |||||||
| @@ -26,7 +26,7 @@ struct YoutubeConnectionPool | |||||||
|  |  | ||||||
|   def client(region = nil, &block) |   def client(region = nil, &block) | ||||||
|     if region |     if region | ||||||
|       conn = make_client(url, region) |       conn = make_client(url, region, force_resolve = true) | ||||||
|       response = yield conn |       response = yield conn | ||||||
|     else |     else | ||||||
|       conn = pool.checkout |       conn = pool.checkout | ||||||
| @@ -59,9 +59,14 @@ struct YoutubeConnectionPool | |||||||
|   end |   end | ||||||
| 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 = 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.before_request { |r| add_yt_headers(r) } if url.host == "www.youtube.com" | ||||||
|   client.read_timeout = 10.seconds |   client.read_timeout = 10.seconds | ||||||
|   client.connect_timeout = 10.seconds |   client.connect_timeout = 10.seconds | ||||||
| @@ -80,8 +85,8 @@ def make_client(url : URI, region = nil) | |||||||
|   return client |   return client | ||||||
| end | end | ||||||
|  |  | ||||||
| def make_client(url : URI, region = nil, &block) | def make_client(url : URI, region = nil, force_resolve : Bool = false, &block) | ||||||
|   client = make_client(url, region) |   client = make_client(url, region, force_resolve) | ||||||
|   begin |   begin | ||||||
|     yield client |     yield client | ||||||
|   ensure |   ensure | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user