Skip to content

Commit 177b607

Browse files
authored
chore: Cork serving static files (#11037)
1 parent c813505 commit 177b607

File tree

2 files changed

+21
-19
lines changed

2 files changed

+21
-19
lines changed

packages/server/pipeStreamOverResponse.ts

+20-18
Original file line numberDiff line numberDiff line change
@@ -17,25 +17,27 @@ const pipeStreamOverResponse = (
1717
return
1818
}
1919
const ab = chunk.buffer.slice(chunk.byteOffset, chunk.byteOffset + chunk.byteLength)
20-
const lastOffset = res.getWriteOffset()
21-
const [ok, done] = res.tryEnd(ab as ArrayBuffer, totalSize)
22-
if (done) readStream.destroy()
23-
if (ok) return
24-
// backpressure found!
25-
readStream.pause()
26-
// save the current chunk & its offset
27-
res.ab = ab
28-
res.abOffset = lastOffset
20+
res.cork(() => {
21+
const lastOffset = res.getWriteOffset()
22+
const [ok, done] = res.tryEnd(ab as ArrayBuffer, totalSize)
23+
if (done) readStream.destroy()
24+
if (ok) return
25+
// backpressure found!
26+
readStream.pause()
27+
// save the current chunk & its offset
28+
res.ab = ab
29+
res.abOffset = lastOffset
2930

30-
// set up a drainage
31-
res.onWritable((offset) => {
32-
const [ok, done] = res.tryEnd(res.ab.slice(offset - res.abOffset), totalSize)
33-
if (done) {
34-
readStream.destroy()
35-
} else if (ok) {
36-
readStream.resume()
37-
}
38-
return ok
31+
// set up a drainage
32+
res.onWritable((offset) => {
33+
const [ok, done] = res.tryEnd(res.ab.slice(offset - res.abOffset), totalSize)
34+
if (done) {
35+
readStream.destroy()
36+
} else if (ok) {
37+
readStream.resume()
38+
}
39+
return ok
40+
})
3941
})
4042
})
4143

packages/server/selfHostedHandler.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const selfHostedHandler = async (res: HttpResponse, req: HttpRequest) => {
2828
const ext = path.extname(url).slice(1)
2929
const contentType = mime.types[ext] ?? 'application/octet-stream'
3030

31-
res.writeHeader('content-type', contentType)
31+
res.cork(() => res.writeHeader('content-type', contentType))
3232
const readStream = fs.createReadStream(url)
3333
pipeStreamOverResponse(res, readStream, size)
3434
}

0 commit comments

Comments
 (0)