mirror of
				https://github.com/iv-org/invidious.git
				synced 2025-11-04 06:31:57 +00:00 
			
		
		
		
	Merge pull request #1975 from tenpura-shrimp/disablequic
add option to disable quic
This commit is contained in:
		@@ -95,7 +95,7 @@ LOCALES = {
 | 
			
		||||
  "zh-TW" => load_locale("zh-TW"),
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
YT_POOL = QUICPool.new(YT_URL, capacity: CONFIG.pool_size, timeout: 2.0)
 | 
			
		||||
YT_POOL = YoutubeConnectionPool.new(YT_URL, capacity: CONFIG.pool_size, timeout: 2.0, use_quic: CONFIG.use_quic)
 | 
			
		||||
 | 
			
		||||
# CLI
 | 
			
		||||
Kemal.config.extra_options do |parser|
 | 
			
		||||
 
 | 
			
		||||
@@ -98,6 +98,7 @@ class Config
 | 
			
		||||
  property port : Int32 = 3000                                     # Port to listen for connections (overrided by command line argument)
 | 
			
		||||
  property host_binding : String = "0.0.0.0"                       # Host to bind (overrided by command line argument)
 | 
			
		||||
  property pool_size : Int32 = 100                                 # Pool size for HTTP requests to youtube.com and ytimg.com (each domain has a separate pool of `pool_size`)
 | 
			
		||||
  property use_quic : Bool = true                                  # Use quic transport for youtube api
 | 
			
		||||
 | 
			
		||||
  @[YAML::Field(converter: Preferences::StringToCookies)]
 | 
			
		||||
  property cookies : HTTP::Cookies = HTTP::Cookies.new               # Saved cookies in "name1=value1; name2=value2..." format
 | 
			
		||||
 
 | 
			
		||||
@@ -16,15 +16,15 @@ def add_yt_headers(request)
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
struct QUICPool
 | 
			
		||||
struct YoutubeConnectionPool
 | 
			
		||||
  property! url : URI
 | 
			
		||||
  property! capacity : Int32
 | 
			
		||||
  property! timeout : Float64
 | 
			
		||||
  property pool : ConnectionPool(QUIC::Client)
 | 
			
		||||
  property pool : ConnectionPool(QUIC::Client | HTTP::Client)
 | 
			
		||||
 | 
			
		||||
  def initialize(url : URI, @capacity = 5, @timeout = 5.0)
 | 
			
		||||
  def initialize(url : URI, @capacity = 5, @timeout = 5.0, use_quic = true)
 | 
			
		||||
    @url = url
 | 
			
		||||
    @pool = build_pool
 | 
			
		||||
    @pool = build_pool(use_quic)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def client(region = nil, &block)
 | 
			
		||||
@@ -50,9 +50,13 @@ struct QUICPool
 | 
			
		||||
    response
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  private def build_pool
 | 
			
		||||
    ConnectionPool(QUIC::Client).new(capacity: capacity, timeout: timeout) do
 | 
			
		||||
      conn = QUIC::Client.new(url)
 | 
			
		||||
  private def build_pool(use_quic)
 | 
			
		||||
    ConnectionPool(QUIC::Client | HTTP::Client).new(capacity: capacity, timeout: timeout) do
 | 
			
		||||
      if use_quic
 | 
			
		||||
        conn = QUIC::Client.new(url)
 | 
			
		||||
      else
 | 
			
		||||
        conn = HTTP::Client.new(url)
 | 
			
		||||
      end
 | 
			
		||||
      conn.family = (url.host == "www.youtube.com") ? CONFIG.force_resolve : Socket::Family::INET
 | 
			
		||||
      conn.family = Socket::Family::INET if conn.family == Socket::Family::UNSPEC
 | 
			
		||||
      conn.before_request { |r| add_yt_headers(r) } if url.host == "www.youtube.com"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user