0
0
mirror of https://github.com/nodejs/node.git synced 2024-12-01 16:10:02 +01:00

Helpful error when child_process.exec hit maxBuffer

This commit is contained in:
Ryan Dahl 2011-01-27 17:45:17 -08:00
parent 1f041fe73e
commit cb06abe1e5
2 changed files with 17 additions and 1 deletions

View File

@ -60,6 +60,8 @@ exports.execFile = function(file /* args, options, callback */) {
var exited = false;
var timeoutId;
var err;
function exithandler(code, signal) {
if (exited) return;
exited = true;
@ -71,7 +73,9 @@ exports.execFile = function(file /* args, options, callback */) {
if (!callback) return;
if (code === 0 && signal === null) {
if (err) {
callback(err, stdout, stderr);
} else if (code === 0 && signal === null) {
callback(null, stdout, stderr);
} else {
var e = new Error('Command failed: ' + stderr);
@ -103,6 +107,7 @@ exports.execFile = function(file /* args, options, callback */) {
child.stdout.addListener('data', function(chunk) {
stdout += chunk;
if (stdout.length > options.maxBuffer) {
err = new Error('maxBuffer exceeded.');
kill();
}
});
@ -110,6 +115,7 @@ exports.execFile = function(file /* args, options, callback */) {
child.stderr.addListener('data', function(chunk) {
stderr += chunk;
if (stderr.length > options.maxBuffer) {
err = new Error('maxBuffer exceeded.');
kill();
}
});

View File

@ -0,0 +1,10 @@
var common = require('../common');
var exec = require('child_process').exec;
var assert = require('assert');
var cmd = 'echo "hello world"';
exec(cmd, { maxBuffer: 5 }, function(err, stdout, stderr) {
assert.ok(err);
assert.ok(/maxBuffer/.test(err.message));
});