Skip to content

Commit

Permalink
Handle writeStream errors in sys.pump
Browse files Browse the repository at this point in the history
  • Loading branch information
ry committed Sep 16, 2010
1 parent 3e0a8f3 commit f08985c
Showing 1 changed file with 17 additions and 3 deletions.
20 changes: 17 additions & 3 deletions lib/sys.js
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,15 @@ exports.exec = function () {


exports.pump = function (readStream, writeStream, callback) {
var callbackCalled = false;

function call (a, b, c) {
if (callback && !callbackCalled) {
callback(a, b, c);
callbackCalled = true;
}
}

if (!readStream.pause) readStream.pause = function () {readStream.emit("pause")};
if (!readStream.resume) readStream.resume = function () {readStream.emit("resume")};

Expand All @@ -352,12 +361,17 @@ exports.pump = function (readStream, writeStream, callback) {
});

readStream.addListener("close", function () {
if (callback) callback();
call();
});

readStream.addListener("error", function(err) {
readStream.addListener("error", function (err) {
writeStream.end();
if (callback) callback(err);
call(err);
});

writeStream.addListener("error", function (err) {
readStream.destroy();
call(err);
});
};

Expand Down

0 comments on commit f08985c

Please sign in to comment.