Skip to content

Commit bece4db

Browse files
use pull method (#5442)
* use pull method * guard * remove unused arg * always fulfil * changeset Co-authored-by: Ben McCann <[email protected]>
1 parent c0501a9 commit bece4db

File tree

2 files changed

+31
-12
lines changed

2 files changed

+31
-12
lines changed

.changeset/green-masks-confess.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/kit': patch
3+
---
4+
5+
Don't automatically buffer request bodies

packages/kit/src/node/index.js

+26-12
Original file line numberDiff line numberDiff line change
@@ -18,27 +18,41 @@ function get_raw_body(req) {
1818
return null;
1919
}
2020

21+
let size = 0;
22+
let cancelled = false;
23+
2124
return new ReadableStream({
2225
start(controller) {
2326
req.on('error', (error) => {
2427
controller.error(error);
2528
});
2629

27-
let size = 0;
28-
29-
req.on('data', (chunk) => {
30-
size += chunk.length;
31-
32-
if (size > length) {
33-
controller.error(new Error('content-length exceeded'));
30+
req.on('end', () => {
31+
if (!cancelled) {
32+
controller.close();
3433
}
35-
36-
controller.enqueue(chunk);
3734
});
38-
39-
req.on('end', () => {
40-
controller.close();
35+
},
36+
37+
pull(controller) {
38+
return new Promise((fulfil) => {
39+
req.once('data', (chunk) => {
40+
if (!cancelled) {
41+
size += chunk.length;
42+
if (size > length) {
43+
controller.error(new Error('content-length exceeded'));
44+
}
45+
46+
controller.enqueue(chunk);
47+
}
48+
49+
fulfil();
50+
});
4151
});
52+
},
53+
54+
cancel() {
55+
cancelled = true;
4256
}
4357
});
4458
}

0 commit comments

Comments
 (0)