stop oversized request body parsing
This commit is contained in:
+10
-4
@@ -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);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user