Zackriya-Solutions/meetily · error
Expected partial 206 response, received {}
Error message
Expected partial 206 response, received {} What it means
Thrown by `validate_partial_response` when the downloader issued a Range request (to resume or fetch a byte range of the Parakeet model) but the server did not reply with 206 Partial Content — typically it ignored the Range header and returned 200, or returned an error status. Range support is required for resume logic, so a non-206 response is rejected.
Source
Thrown at frontend/src-tauri/src/parakeet_engine/parakeet_engine.rs:751
if let Some(content_length) = Self::declared_content_length(response)? {
if content_length != exact_bytes {
return Err(anyhow!(
"Full response declared {} bytes, expected {}",
content_length,
exact_bytes
));
}
}
Ok(())
}
fn validate_partial_response(
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,View on GitHub (pinned to a2cb62e827)
Solutions
- Restart the download from byte 0 instead of resuming, so only a full 200 response is needed.
- Use a mirror/server that supports HTTP Range requests (test with `curl -r 0-99 -I <url>` expecting 206).
- If the file size changed upstream, delete the partial file and re-download.
- Check the status code returned; 416 means the resume offset is invalid for the current file.
Defensive patterns
Strategy: fallback
Validate before calling
let head = client.head(url).send().await?;
let probe = client.get(url).header("Range", "bytes=0-0").send().await?;
if probe.status() != reqwest::StatusCode::PARTIAL_CONTENT {
eprintln!("server lacks range support ({}); plan full download", probe.status());
} Try / catch
match result {
Err(e) if e.to_string().contains("Expected partial 206 response") => restart_download_from_scratch(),
other => other,
} Prevention
- Check range support (`curl -r 0-0 -I`) before relying on resume.
- Delete stale partial files when the remote file may have changed.
- Host models on servers with Range support (nginx, S3, official CDN).
When it happens
Trigger: Range GET (`Range: bytes=<start>-`) to the model URL answered with 200 (server ignores Range), 416 (range not satisfiable), 403, or 5xx.
Common situations: Simple static file servers (e.g. `python -m http.server` behind some configs) or CDNs that don't honor Range; resume after a partial download against a mirror lacking range support; requested start offset beyond the (changed) file size.
Related errors
- Expected range-not-satisfiable 416 response, received {}
- Download failed for {} with status {}
- {}: {}
- Expected full 200 response, received {}
- Full response declared {} bytes, expected {}
AI-assisted analysis of Zackriya-Solutions/meetily@a2cb62e827 (2026-09-12).
Data as JSON: /api/errors/0f0beeeaa1e256e4.
Report an issue: GitHub.