From 461138929498f31bd35bea61aa4375a2f56cceb7 Mon Sep 17 00:00:00 2001 From: Alexis Campailla Date: Tue, 8 Mar 2016 17:22:56 +0100 Subject: [PATCH] tty: don't read from console stream upon creation The tty.ReadStream constructor initializes this as a socket, which causes a read to be initiated. Even though during stdin initalization we call readStop shortly after, the read operation can consume keypress events from the system buffers. Fixes: https://github.com/nodejs/node/issues/5384 PR-URL: https://github.com/nodejs/node/pull/5776 Reviewed-By: cjihrig - Colin Ihrig Reviewed-By: jasnell - James M Snell --- lib/tty.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/tty.js b/lib/tty.js index 72efcd078b2892..ee6c0407f6a135 100644 --- a/lib/tty.js +++ b/lib/tty.js @@ -17,17 +17,23 @@ function ReadStream(fd, options) { if (!(this instanceof ReadStream)) return new ReadStream(fd, options); + // pauseOnCreate to avoid reading from the sytem buffer options = util._extend({ highWaterMark: 0, readable: true, writable: false, - handle: new TTY(fd, true) + handle: new TTY(fd, true), + pauseOnCreate: true }, options); net.Socket.call(this, options); this.isRaw = false; this.isTTY = true; + + // Let the stream resume automatically when 'data' event handlers + // are added, even though it was paused on creation + this._readableState.flowing = null; } inherits(ReadStream, net.Socket);