From 615d809ac684a7d2cc7ee5e1aa58f0a921b529a0 Mon Sep 17 00:00:00 2001 From: Gil Pedersen Date: Tue, 12 Mar 2013 15:56:30 +0100 Subject: [PATCH] stream: Never call decoder.end() multiple times Fixes decoder.end() being called on every push(null). As the tls module does this, corrupt stream data could potentially be added to the end. --- lib/_stream_readable.js | 1 + test/simple/test-stream2-set-encoding.js | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/lib/_stream_readable.js b/lib/_stream_readable.js index b09694c071..c669455d7d 100644 --- a/lib/_stream_readable.js +++ b/lib/_stream_readable.js @@ -349,6 +349,7 @@ function onEofChunk(stream, state) { state.buffer.push(chunk); state.length += state.objectMode ? 1 : chunk.length; } + state.decoder = null; } // if we've ended and we have some data left, then emit diff --git a/test/simple/test-stream2-set-encoding.js b/test/simple/test-stream2-set-encoding.js index 8c5973fb63..ad4d884680 100644 --- a/test/simple/test-stream2-set-encoding.js +++ b/test/simple/test-stream2-set-encoding.js @@ -163,6 +163,10 @@ test('setEncoding hex', function(t) { // just kick it off. tr.emit('readable'); + + process.on('exit', function() { + assert(!tr._readableState.decoder); + }); }); test('setEncoding hex with read(13)', function(t) {