Fix download resume corruption when server returns HTTP 200#13014
Merged
TobiGr merged 1 commit intoTeamNewPipe:devfrom Jan 9, 2026
Merged
Fix download resume corruption when server returns HTTP 200#13014TobiGr merged 1 commit intoTeamNewPipe:devfrom
TobiGr merged 1 commit intoTeamNewPipe:devfrom
Conversation
When resuming a download after interruption, if the server returns HTTP 200 (full resource) instead of HTTP 206 (partial content), the code correctly resets mMission.done but fails to reset the 'start' variable. This causes the subsequent file seek to use a stale offset, writing new data at incorrect positions. This bug causes file corruption for large downloads (>5GB) that are interrupted and resumed, particularly when: - Switching between WiFi networks - Server CDN returning different responses - Connection drops during long downloads The corruption manifests as duplicate data regions in the file, which for MP4 downloads results in multiple MOOV atoms and broken seek functionality. Fix: Reset start=0 when HTTP 200 is received, ensuring the file write position correctly restarts from the beginning of the current resource.
TobiGr
approved these changes
Jan 9, 2026
Contributor
|
/backport release-0-28.1 |
|
Successfully created backport PR for |
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.
What it does
When resuming a download and the server returns HTTP 200 (instead of 206),
mMission.doneis reset butstartis not. This causes the file seek at line 91 to use a stale offset, writing data at the wrong position.Related issue #12874
The fix
Reset
start = 0when HTTP 200 is received, so the write position correctly restarts from the beginning of the current resource.Testing
Verified fix by downloading a large file, interrupting, and resuming. Seeking works correctly after the fix.
APK tested?
Yes - built and tested on physical device.