Browse Source

Helpful error when child_process.exec hit maxBuffer

v0.7.4-release
Ryan Dahl 14 years ago
parent
commit
cb06abe1e5
  1. 8
      lib/child_process.js
  2. 10
      test/simple/test-exec-max-buffer.js

8
lib/child_process.js

@ -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();
}
});

10
test/simple/test-exec-max-buffer.js

@ -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));
});
Loading…
Cancel
Save