Zackriya-Solutions/meetily · error

Partial response is missing Content-Range

Error message

Partial response is missing Content-Range

What it means

Thrown by `validate_partial_response` when a 206 response carries no `Content-Range` header. RFC 7233 requires 206 responses to include Content-Range; without it the downloader cannot verify which byte span was returned, so it fails rather than silently trusting the body.

Source

Thrown at frontend/src-tauri/src/parakeet_engine/parakeet_engine.rs:759

        }
        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,
                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"))?;

View on GitHub (pinned to a2cb62e827)

Solutions

  1. Use a standards-compliant server/mirror for the model download.
  2. Fall back to a full (non-range) download from byte 0.
  3. Check whether a proxy or CDN is stripping the Content-Range header and bypass it.
Defensive patterns

Strategy: fallback

Validate before calling

let probe = client.get(url).header("Range", "bytes=0-0").send().await?;
if probe.status() == reqwest::StatusCode::PARTIAL_CONTENT && probe.headers().get("content-range").is_none() {
    eprintln!("server returns 206 without Content-Range; avoid resuming here");
}

Try / catch

match result {
    Err(e) if e.to_string().contains("missing Content-Range") => fall_back_to_full_download(),
    other => other,
}

Prevention

When it happens

Trigger: Server replies 206 Partial Content to a Range request for the Parakeet model but omits the Content-Range header.

Common situations: Non-compliant custom mirror or lightweight HTTP server emitting 206 without the header; proxy stripping the Content-Range header from responses.

Related errors


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