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) { function readBody(req, limit = 100 * 1024) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let data = ''; let data = '';
let settled = false;
const fail = (error) => { if (!settled) { settled = true; reject(error); } };
req.on('data', (c) => { req.on('data', (c) => {
if (settled) return;
data += c; 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', () => { req.on('end', () => {
if (settled) return;
try { try {
resolve(data ? JSON.parse(data) : {}); const body = data ? JSON.parse(data) : {};
settled = true;
resolve(body);
} catch { } 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);
}); });
} }