From 43248b461d4f7b74fe0ab761259ef29e4b0636c6 Mon Sep 17 00:00:00 2001 From: Inverle Date: Sat, 30 Aug 2025 15:13:10 +0200 Subject: Fix curl response parsing (#7866) * Fix curl response parsing * Specify redirect count with `\SimplePie\HTTP\Parser::prepareHeaders()` instead Simply notify SimplePie of the redirect count before parsing * Better error check * Simplify --- lib/lib_rss.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'lib') diff --git a/lib/lib_rss.php b/lib/lib_rss.php index c0fe17708..27020960e 100644 --- a/lib/lib_rss.php +++ b/lib/lib_rss.php @@ -643,13 +643,16 @@ function httpGet(string $url, string $cachePath, string $type = 'html', array $a $c_redirect_count = curl_getinfo($ch, CURLINFO_REDIRECT_COUNT); $c_error = curl_error($ch); - $parser = new \SimplePie\HTTP\Parser(is_string($response) ? $response : ''); - if ($parser->parse()) { - $headers = $parser->headers; - $body = $parser->body; - } else { - $headers = []; - $body = false; + $body = false; + $headers = []; + if ($response !== false) { + assert($c_redirect_count >= 0); + $response = \SimplePie\HTTP\Parser::prepareHeaders(is_string($response) ? $response : '', $c_redirect_count + 1); + $parser = new \SimplePie\HTTP\Parser($response); + if ($parser->parse()) { + $headers = $parser->headers; + $body = $parser->body; + } } $fail = $c_status != 200 || $c_error != '' || $body === false; -- cgit v1.2.3