Zackriya-Solutions/meetily · error

416 response reports

Error message

416 response reports {} total bytes, expected {}

What it means

After receiving a 416 with a Content-Range: bytes */<total> header, the engine checks that the server's declared total file size matches the artifact's known exact_bytes. This error fires when the sizes disagree, meaning the remote file differs from what the local artifact spec expects (changed, truncated, or wrong file).

Solutions

  1. Pin the download to the exact upstream revision/commit the artifact sizes were generated from.
  2. Update the artifact manifest (filename/exact_bytes) to match the current remote files.
  3. Clear the model cache directory and re-download from the canonical source.
  4. Verify with curl -sI <url> that Content-Length matches exact_bytes.

Example fix

// before: stale manifest after upstream re-upload
ArtifactSpec { filename: "model.int8.onnx", exact_bytes: 1_203_331_072 }
// after: refreshed to match current remote file
ArtifactSpec { filename: "model.int8.onnx", exact_bytes: 1_208_552_448 }
Defensive patterns

Strategy: validation

Validate before calling

// confirm remote size matches the expected artifact size before download
const expected: u64 = 1_203_331_072; // artifact.exact_bytes
let len: u64 = reqwest::head(url).await?.headers()[CONTENT_LENGTH]
    .to_str()?.parse()?;
assert_eq!(len, expected, "remote artifact size drifted; pin a revision");

Try / catch

match download_result {
    Err(e) if e.to_string().contains("total bytes, expected") => {
        // upstream changed: pin the exact revision or refresh the manifest
        refresh_artifact_manifest().await?;
        retry_download().await
    }
    other => other,
}

Prevention

When it happens

Trigger: The remote model artifact at base_url has a different byte length than the hardcoded artifact.exact_bytes — typically because the upstream file was updated/re-uploaded, the mirror serves a different variant, or the artifact manifest is stale.

Common situations: Upstream model repo updated to a new revision while the app still ships old expected sizes; a mirror serving quantized vs full variant; manually edited artifact specs; CDN serving a stale cached copy.

Understand the failure class

Background: Checksum mismatch errors: "checksum verification failed", "digest mismatch", "expected vs actual checksum" — what they mean and how to fix them — this error's family across 41 libraries.

Related errors


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

Appendix: source

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

            }
        }
        Ok(())
    }

    fn validate_unsatisfied_response(response: &reqwest::Response, exact_bytes: u64) -> Result<()> {
        if response.status() != reqwest::StatusCode::RANGE_NOT_SATISFIABLE {
            return Err(anyhow!(
                "Expected range-not-satisfiable 416 response, received {}",
                response.status()
            ));
        }
        let content_range = response
            .headers()
            .get(reqwest::header::CONTENT_RANGE)
            .ok_or_else(|| anyhow!("416 response is missing Content-Range"))?;
        match parse_content_range(content_range)? {
            ContentRange::Unsatisfied { total } if total == exact_bytes => Ok(()),
            ContentRange::Unsatisfied { total } => Err(anyhow!(
                "416 response reports {} total bytes, expected {}",
                total,
                exact_bytes
            )),
            ContentRange::Range { .. } => Err(anyhow!("416 response has a satisfied Content-Range")),
        }
    }

    async fn download_model_detailed_from_source(
        &self,
        model_name: &str,
        model_dir: &Path,
        base_url: &str,
        artifacts: &[ArtifactSpec],
        progress_callback: Option<Box<dyn Fn(DownloadProgress) + Send>>,
    ) -> Result<()> {
        let active_download = self.reserve_active_download(model_name).await?;
        self.set_downloading_status(model_name, 0).await;

View on GitHub (pinned to a2cb62e827)