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

  1. Restart the download from byte 0 instead of resuming, so only a full 200 response is needed.
  2. Use a mirror/server that supports HTTP Range requests (test with `curl -r 0-99 -I <url>` expecting 206).
  3. If the file size changed upstream, delete the partial file and re-download.
  4. 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

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


AI-assisted analysis of Zackriya-Solutions/meetily@a2cb62e827 (2026-09-12). Data as JSON: /api/errors/0f0beeeaa1e256e4. Report an issue: GitHub.