mirror of
				https://github.com/iv-org/invidious.git
				synced 2025-10-31 04:32:02 +00: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}" | ||||
|     end | ||||
|  | ||||
|     client = make_client(URI.parse(host), region) | ||||
|     client = make_client(URI.parse(host), region, force_resolve = true) | ||||
|     response = HTTP::Client::Response.new(500) | ||||
|     error = "" | ||||
|     5.times do | ||||
| @@ -57,7 +57,7 @@ module Invidious::Routes::VideoPlayback | ||||
|           if new_host != host | ||||
|             host = new_host | ||||
|             client.close | ||||
|             client = make_client(URI.parse(new_host), region) | ||||
|             client = make_client(URI.parse(new_host), region, force_resolve = true) | ||||
|           end | ||||
|  | ||||
|           url = "#{location.request_target}&host=#{location.host}#{region ? "®ion=#{region}" : ""}" | ||||
| @@ -71,7 +71,7 @@ module Invidious::Routes::VideoPlayback | ||||
|         fvip = "3" | ||||
|  | ||||
|         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 | ||||
|         error = ex.message | ||||
|       end | ||||
| @@ -196,7 +196,7 @@ module Invidious::Routes::VideoPlayback | ||||
|             break | ||||
|           else | ||||
|             client.close | ||||
|             client = make_client(URI.parse(host), region) | ||||
|             client = make_client(URI.parse(host), region, force_resolve = true) | ||||
|           end | ||||
|         end | ||||
|  | ||||
|   | ||||
| @@ -26,7 +26,7 @@ struct YoutubeConnectionPool | ||||
|  | ||||
|   def client(region = nil, &block) | ||||
|     if region | ||||
|       conn = make_client(url, region) | ||||
|       conn = make_client(url, region, force_resolve = true) | ||||
|       response = yield conn | ||||
|     else | ||||
|       conn = pool.checkout | ||||
| @@ -59,9 +59,14 @@ struct YoutubeConnectionPool | ||||
|   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.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.read_timeout = 10.seconds | ||||
|   client.connect_timeout = 10.seconds | ||||
| @@ -80,8 +85,8 @@ def make_client(url : URI, region = nil) | ||||
|   return client | ||||
| end | ||||
|  | ||||
| def make_client(url : URI, region = nil, &block) | ||||
|   client = make_client(url, region) | ||||
| def make_client(url : URI, region = nil, force_resolve : Bool = false, &block) | ||||
|   client = make_client(url, region, force_resolve) | ||||
|   begin | ||||
|     yield client | ||||
|   ensure | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 syeopite
					syeopite