Zackriya-Solutions/meetily · error
Partial response range {}-{} / {} does not match {}-{} / {}
Error message
Partial response range {}-{} / {} does not match {}-{} / {} What it means
Thrown by `validate_partial_response` when the parsed Content-Range does not exactly match the requested byte span: start must equal `expected_start`, end must equal `exact_bytes - 1`, and total must equal `exact_bytes`. Any deviation (server returned a different span, or the remote file size changed) aborts the download to guarantee model integrity.
Source
Thrown at frontend/src-tauri/src/parakeet_engine/parakeet_engine.rs:764
response: &reqwest::Response,
expected_start: u64,
exact_bytes: u64,
) -> Result<()> {
if response.status() != reqwest::StatusCode::PARTIAL_CONTENT {
return Err(anyhow!(
"Expected partial 206 response, received {}",
response.status()
));
}
let content_range = response
.headers()
.get(reqwest::header::CONTENT_RANGE)
.ok_or_else(|| anyhow!("Partial response is missing Content-Range"))?;
let ContentRange::Range { start, end, total } = parse_content_range(content_range)? else {
return Err(anyhow!("Partial response has an unsatisfied Content-Range"));
};
if start != expected_start || end != exact_bytes - 1 || total != exact_bytes {
return Err(anyhow!(
"Partial response range {}-{} / {} does not match {}-{} / {}",
start,
end,
total,
expected_start,
exact_bytes - 1,
exact_bytes
));
}
let expected_length = end
.checked_sub(start)
.and_then(|length| length.checked_add(1))
.ok_or_else(|| anyhow!("Partial response range length overflow"))?;
if let Some(content_length) = Self::declared_content_length(response)? {
if content_length != expected_length {
return Err(anyhow!(
"Partial response declared {} bytes, expected {}",
content_length,View on GitHub (pinned to a2cb62e827)
Solutions
- Delete the partial download and start over so expected and actual sizes align.
- Confirm the mirror serves the exact model version the app expects; switch to the official URL if not.
- Retry — if the server modified the file, the new total should now match after a fresh start.
Defensive patterns
Strategy: fallback
Validate before calling
// Compare remote total with expected before resuming
let head = client.head(url).send().await?;
let total: Option<u64> = head.headers().get("content-length").and_then(|v| v.to_str().ok()).and_then(|s| s.parse().ok());
if total != Some(EXPECTED_BYTES) { eprintln!("remote file differs from expected; re-download required"); } Try / catch
match result {
Err(e) if e.to_string().contains("does not match") => delete_partial_and_restart_download(),
other => other,
} Prevention
- Pin model versions; never resume across version changes.
- Store the expected total size alongside the partial file and re-check before resume.
- Use mirrors serving the exact model build.
When it happens
Trigger: Range GET to the Parakeet model URL returns 206 with a Content-Range whose start/end/total differ from the requested range — e.g. server coalesces ranges, or the file on the server has a different total size than expected.
Common situations: Model file updated on the mirror mid-download (total mismatch); server satisfying a larger/smaller range than requested; resuming a partial file from a different model version.
Related errors
- Full response declared {} bytes, expected {}
- {}: {}
- Expected full 200 response, received {}
- Expected partial 206 response, received {}
- Partial response is missing Content-Range
AI-assisted analysis of Zackriya-Solutions/meetily@a2cb62e827 (2026-09-12).
Data as JSON: /api/errors/fb1c315a37f69ee0.
Report an issue: GitHub.