Cryptify's GET /filedownload/{uuid} endpoint now honours inbound Range headers and advertises Accept-Ranges: bytes, enabling resumable downloads in browsers. Previously Rocket 0.5's FileServer ignored Range and always returned a plain 200 with the full body, which made browsers disable the resume button on flaky multi-GB downloads.
Source PR
encryption4all/cryptify#154 — fix: HTTP Range support on /filedownload (merged 2026-05-13). Closes encryption4all/cryptify#153.
What needs documenting
In docs/repos/cryptify.md (and possibly docs/guide/architecture.md, which already lists /filedownload/{uuid} in its endpoint table), expand the description of GET /filedownload/{uuid} to mention:
- Always sets
Accept-Ranges: bytes.
- With no
Range header: 200 OK with Content-Length and the full body.
- With a single
Range header (bytes=N-M, bytes=N-, or bytes=-N): 206 Partial Content with Content-Range: bytes start-end/total and the requested slice.
- Unsatisfiable or malformed ranges:
416 Range Not Satisfiable with Content-Range: bytes */total.
- Multi-range (
multipart/byteranges) is intentionally unsupported.
Also note in the CORS-related section that Range is now in the allowed_headers list so browser fetch calls can send it.
Verification
- Cross-check
src/main.rs at the merge commit of cryptify#154.
- Run
npx vitepress build docs.
- Style: align with
postguard-docs/CLAUDE.md (no em dashes, minimal bold, no banned words).
Cryptify's
GET /filedownload/{uuid}endpoint now honours inboundRangeheaders and advertisesAccept-Ranges: bytes, enabling resumable downloads in browsers. Previously Rocket 0.5'sFileServerignoredRangeand always returned a plain 200 with the full body, which made browsers disable the resume button on flaky multi-GB downloads.Source PR
encryption4all/cryptify#154 —
fix: HTTP Range support on /filedownload(merged 2026-05-13). Closes encryption4all/cryptify#153.What needs documenting
In
docs/repos/cryptify.md(and possiblydocs/guide/architecture.md, which already lists/filedownload/{uuid}in its endpoint table), expand the description ofGET /filedownload/{uuid}to mention:Accept-Ranges: bytes.Rangeheader:200 OKwithContent-Lengthand the full body.Rangeheader (bytes=N-M,bytes=N-, orbytes=-N):206 Partial ContentwithContent-Range: bytes start-end/totaland the requested slice.416 Range Not SatisfiablewithContent-Range: bytes */total.multipart/byteranges) is intentionally unsupported.Also note in the CORS-related section that
Rangeis now in theallowed_headerslist so browserfetchcalls can send it.Verification
src/main.rsat the merge commit of cryptify#154.npx vitepress build docs.postguard-docs/CLAUDE.md(no em dashes, minimal bold, no banned words).