summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2012-01-26 17:14:16 -0800
committerisaacs <i@izs.me>2012-01-26 17:55:44 -0800
commitff0f0aeb401765646fefd9bbdc0f2a68d1ad342c (patch)
tree29e8ca50deb51e8b05072a10e5c60b5e80f65db1 /src
parenta0119af0e477d12b69c730336916b49fe0a46aba (diff)
downloadnode-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.js10
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;
});