Fix range header reset on retry in download functionality #28
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.
This PR addresses an issue where the range header persists during download retries in
common_download_file_single, which can cause problems when resumed downloads fail and need to retry.Problem
When downloading files with resume capability, the current implementation:
Range: bytes=X-) for partial downloadscurl_perform_with_retrywhich may retry failed requestsSolution
This PR implements the requested functionality by:
Adding a
partial_sizeparameter tocurl_perform_with_retry:Resetting range header on retry when
partial_size > 0:Switching to
CURLOPT_RANGEinstead of custom headers for better management:Key Benefits
partial_sizeparameter has a default value of 0, so existing code continues to work unchangedTesting
This change ensures that resumed downloads behave more reliably when retries are needed, addressing the core issue described in the problem statement.
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
ggml.ai./build/bin/test-arg-parser(dns block)/home/REDACTED/work/llama.cpp/llama.cpp/build/bin/test-arg-parser(dns block)huggingface.co/usr/lib/git-core/git-remote-https origin REDACTED(dns block)/home/REDACTED/work/llama.cpp/llama.cpp/build/bin/test-thread-safety -hf ggml-org/models -hff tinyllamas/stories15M-q4_0.gguf -ngl 99 -p The meaning of life is -n 128 -c 256 -ub 32 -np 4 -t 2(dns block)/home/REDACTED/work/llama.cpp/llama.cpp/build/bin/llama-eval-callback --hf-repo ggml-org/models --hf-file tinyllamas/stories260K.gguf --model stories260K.gguf --prompt hello --seed 42 -ngl 0(dns block)If you need me to access, download, or install something from one of these locations, you can either:
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.