From 4450e9b973a685c02cfd2917b6173d85981db79f Mon Sep 17 00:00:00 2001 From: Mynacol Date: Wed, 22 Feb 2023 17:48:39 +0100 Subject: [PATCH] Let curl select the default HTTP version (#3249) This essentially reverts b042412416cc4ecc71c3f9c13239661a0dd588a6, as YouTube seems to have fixed their servers. At least I was able to query the YouTube endpoint around 150 times with CURL_HTTP_VERSION_2TLS recently. They even advertise HTTP/3 support with an `alt-svc` HTTP header now. This unsets CURLOPT_HTTP_VERSION to let curl decide on the version. This would support all curl versions and opens the possibility for HTTP/3, but leads to inconsistent behavior depending on the underlying curl version. We don't set CURL_HTTP_VERSION_NONE explicitly, as it is always the curl default and opens the path to let individual bridges override the HTTP version where necessary. Alternatively, setting CURL_HTTP_VERSION_2TLS explicitly would lead to consistent behavior regardless of the curl version, but might uncover old curl bugs before the developers enabled HTTP/2 by default. Additionally, that requires at least PHP 7.0.7 (we require PHP 7.4 already) and curl 7.47.0 [1], released on Jan 27 2016 [2]. See also the discussion on https://github.com/RSS-Bridge/rss-bridge/pull/3249 [1] https://www.php.net/manual/curl.constants.php [2] https://curl.se/docs/releases.html --- lib/contents.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/contents.php b/lib/contents.php index 1d89261f..5dec2730 100644 --- a/lib/contents.php +++ b/lib/contents.php @@ -244,8 +244,6 @@ function _http_request(string $url, array $config = []): array curl_setopt($ch, CURLOPT_TIMEOUT, $config['timeout']); curl_setopt($ch, CURLOPT_ENCODING, ''); curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); - // Force HTTP 1.1 because newer versions of libcurl defaults to HTTP/2 - curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); if ($config['max_filesize']) { // This option inspects the Content-Length header