fix(http-client): detect brotli support via libcurl, not PHP extension#60262
Open
fix(http-client): detect brotli support via libcurl, not PHP extension#60262
Conversation
- Fixes a regression introduced in #55433. Signed-off-by: ernolf <raphael.gradenwitz@googlemail.com>
Contributor
Author
|
/backport to stable33 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
function_exists('brotli_uncompress')checks the wrong layer.In Guzzle's curl handler,
CURLOPT_ENCODINGis set to''which instructs libcurl to decompress all encodings it was compiled with. All decompression happens inside libcurl. The PHPbrotli_uncompress()function is never called in this pipeline.The wrong check creates two silent failure modes:
Content-Encoding: br, libcurl passes compressed bytes through, application receives garbled dataAccept-Encodingdespite full supportThe correct signal is
CURL_VERSION_BROTLIincurl_version()['features'], which reflects whether this libcurl binary was compiled withlibbrotlidec.This is also how the Nextcloud News app (
FetcherConfig.php) detects brotli support.Checklist
3. to review, feature component)stable32)AI (if applicable)