diff options
author | isaacs <i@izs.me> | 2012-01-26 17:14:16 -0800 |
---|---|---|
committer | isaacs <i@izs.me> | 2012-01-26 17:55:44 -0800 |
commit | ff0f0aeb401765646fefd9bbdc0f2a68d1ad342c (patch) | |
tree | 29e8ca50deb51e8b05072a10e5c60b5e80f65db1 /src | |
parent | a0119af0e477d12b69c730336916b49fe0a46aba (diff) | |
download | node-ff0f0aeb401765646fefd9bbdc0f2a68d1ad342c.tar.gz |
Fix #2507 Raise errors less agressively when destroying stdio streams
Also, if an error is already provided, then raise the provided
error, rather than throwing it with a less helpful 'stdout cannot
be closed' message.
This is important for properly handling EPIPEs.
Diffstat (limited to 'src')
-rw-r--r-- | src/node.js | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/node.js b/src/node.js index 15cccb68f..80f30a010 100644 --- a/src/node.js +++ b/src/node.js @@ -280,8 +280,9 @@ process.__defineGetter__('stdout', function() { if (stdout) return stdout; stdout = createWritableStdioStream(1); - stdout.end = stdout.destroy = stdout.destroySoon = function() { - throw new Error('process.stdout cannot be closed'); + stdout.destroy = stdout.destroySoon = function(er) { + er = er || new Error('process.stdout cannot be closed.'); + stdout.emit('error', er); }; return stdout; }); @@ -289,8 +290,9 @@ process.__defineGetter__('stderr', function() { if (stderr) return stderr; stderr = createWritableStdioStream(2); - stderr.end = stderr.destroy = stderr.destroySoon = function() { - throw new Error('process.stderr cannot be closed'); + stderr.destroy = stderr.destroySoon = function(er) { + er = er || new Error('process.stderr cannot be closed.'); + stderr.emit('error', er); }; return stderr; }); |