stop oversized request body parsing

This commit is contained in:
2026-09-06 17:28:51 +03:00
parent dc0d471ce5
commit 47286fe847
+10 -4
View File
@@ -627,18 +627,24 @@ function readRaw(req, limit = 1024 * 1024) {
function readBody(req, limit = 100 * 1024) {
return new Promise((resolve, reject) => {
let data = '';
let settled = false;
const fail = (error) => { if (!settled) { settled = true; reject(error); } };
req.on('data', (c) => {
if (settled) return;
data += c;
if (data.length > limit) reject(new Error('gövde çok büyük'));
if (data.length > limit) { fail(new Error('gövde çok büyük')); req.destroy(); }
});
req.on('end', () => {
if (settled) return;
try {
resolve(data ? JSON.parse(data) : {});
const body = data ? JSON.parse(data) : {};
settled = true;
resolve(body);
} catch {
reject(new Error('geçersiz JSON gövdesi'));
fail(new Error('geçersiz JSON gövdesi'));
}
});
req.on('error', reject);
req.on('error', fail);
});
}