# Fix: Respect Content-Length when Content-Encoding is present#1653
Closed
ali90h wants to merge 11 commits intohttpie:masterfrom
ali90h:master
Closed
# Fix: Respect Content-Length when Content-Encoding is present#1653ali90h wants to merge 11 commits intohttpie:masterfrom ali90h:master
ali90h wants to merge 11 commits intohttpie:masterfrom
ali90h:master
Conversation
Per RFC 9110 § 8.6 the Content-Length header reflects the **encoded** size. The previous logic compared it to the decoded size, yielding false "Incomplete download" errors for gzip responses.
…-in-download fix(download): respect Content-Length when Content-Encoding is present
Author
|
@httpie/maintainers This PR fixes the Content-Length validation bug (#1642) that was causing false "Incomplete download" errors with gzipped responses. Would appreciate a review when you have time. Thanks! |
Author
|
I opened a minimal, focused PR in #NNNN that only includes the actual fix in httpie/downloads.py plus a dedicated regression test for the gzip + Content-Length case. It supersedes #1653, which bundled some unrelated CI/docs changes. The new PR keeps the scope tight: when Content-Encoding is present, progress relies on received bytes rather than Content-Length, preventing false “Incomplete download” and >100% overshoot. If you prefer, I’m happy to close this PR in favor of #1654. Thanks for your time! |
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.
Fix: Respect Content-Length when Content-Encoding is present
Problem Summary
HTTPie's
--downloadflag incorrectly reports "Incomplete download" errors when receiving responses withContent-Encoding: gzip(or other encodings), even when the download is actually complete.Example error:
This occurs because HTTPie was comparing the
Content-Lengthheader (which represents compressed size) against the decompressed content size.Root Cause
The issue violates RFC 9110 § 8.6, which states:
When
Content-Encoding: gzipis present:Content-Length: 5084527= size of compressed dataFix Overview
Content-Encodingis present, validate against compressed payload sizeContent-Encoding, behavior remains unchangedKey Changes
Content-Lengthagainst raw bytes received when content encoding is presentTesting
Backward Compatibility
Related Issues
Fixes #1642
Acknowledgments
Thanks to @kohnalex for the detailed bug report and reproduction steps, which made this fix straightforward to implement and test.