Advertise byte ranges on downloads, and record the live checks
Stalwart honors a single byte range on its download endpoint but sends no Accept-Ranges, and Chrome's PDF viewer only reads a file in pieces when the first response says it can. The proxy now says so itself. Checked live on 0.16.22: ContactCard/changes reports creates, updates and destroys exactly, which the contacts store's sync relies on, and a range the server cannot serve gets the whole file with 200, never 416. The mock now answers ranges the same way and sends no Accept-Ranges.
This commit is contained in:
+8
-1
@@ -822,7 +822,14 @@ export function createApp(basePath = config.basePath): Hono<Env> {
|
||||
if (cl) headers.set("Content-Length", cl);
|
||||
const partial = res.status === 206 && res.headers.get("content-range");
|
||||
if (partial) headers.set("Content-Range", partial);
|
||||
if (res.headers.get("accept-ranges") === "bytes") headers.set("Accept-Ranges", "bytes");
|
||||
/*
|
||||
* Said here because Stalwart does not say it. It honors a single byte
|
||||
* range but sends no `Accept-Ranges` (0.16.22, checked live on
|
||||
* 2026-09-16), and Chrome's PDF viewer only reads a file in pieces when
|
||||
* the first response advertises it. A server that ignores a range sends
|
||||
* the whole file, which the browser takes just as well.
|
||||
*/
|
||||
headers.set("Accept-Ranges", "bytes");
|
||||
const safeInline = inline && isInlineSafe(type);
|
||||
headers.set(
|
||||
"Content-Disposition",
|
||||
|
||||
Reference in New Issue
Block a user