Skip to content

fix: accept complete HTTP responses for full ranges - #858

Open
RanaPriyansh wants to merge 1 commit into
apache:mainfrom
RanaPriyansh:fix/http-full-range-806
Open

RanaPriyansh wants to merge 1 commit into
apache:mainfrom
RanaPriyansh:fix/http-full-range-806

Conversation

@RanaPriyansh

Copy link
Copy Markdown

Which issue does this PR close?

Closes #806. Related to #846.

Rationale for this change

The HTTP client rejects complete HTTP 200 responses when a requested range covers the entire object.

What changes are included in this PR?

Accept HTTP 200 when the complete response satisfies the requested range. Ignore Content-Range on these responses. Preserve HTTP 206 validation and reject complete responses for requests that cover only part of the object.

For body retries, require the response size to match the exact remaining range. Preserve ETag checks.

Tests cover bounded, offset and suffix ranges, empty objects, misleading headers, rejection cases, and body retries.

On Rust 1.97.0, the two HTTP regressions fail on the unchanged baseline. The candidate passes 11 public range tests, 7 shared HTTP tests, and the HTTP library suite (137 passed, 1 ignored). Formatting and strict all-feature/all-target Clippy pass. External cloud integration tests were not run.

AI assistance through OpenAI Codex produced the implementation, tests, and draft text.

Are there any user-facing changes?

Range requests that cover the entire object can accept HTTP 200 responses. No public API signatures change.

@RanaPriyansh
RanaPriyansh force-pushed the fix/http-full-range-806 branch from bc05cd9 to 7e9ccf1 Compare September 24, 2026 09:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Errors on 200 Response for entire-object range request

1 participant