diff options
-rw-r--r-- | lib/_tls_wrap.js | 9 | ||||
-rw-r--r-- | test/parallel/test-tls-wrap-event-emmiter.js | 16 |
2 files changed, 19 insertions, 6 deletions
diff --git a/lib/_tls_wrap.js b/lib/_tls_wrap.js index 511ff3557a..b8a962e734 100644 --- a/lib/_tls_wrap.js +++ b/lib/_tls_wrap.js @@ -31,7 +31,6 @@ const util = require('util'); const common = require('_tls_common'); const StreamWrap = require('_stream_wrap').StreamWrap; const Buffer = require('buffer').Buffer; -const Duplex = require('stream').Duplex; const debug = util.debuglog('tls'); const Timer = process.binding('timer_wrap').Timer; const tls_wrap = process.binding('tls_wrap'); @@ -275,12 +274,10 @@ function TLSSocket(socket, options) { // Wrap plain JS Stream into StreamWrap var wrap; - if (!(socket instanceof net.Socket) && socket instanceof Duplex) - wrap = new StreamWrap(socket); - else if ((socket instanceof net.Socket) && !socket._handle) - wrap = new StreamWrap(socket); - else + if ((socket instanceof net.Socket && socket._handle) || !socket) wrap = socket; + else + wrap = new StreamWrap(socket); // Just a documented property to make secure sockets // distinguishable from regular ones. diff --git a/test/parallel/test-tls-wrap-event-emmiter.js b/test/parallel/test-tls-wrap-event-emmiter.js new file mode 100644 index 0000000000..b468304249 --- /dev/null +++ b/test/parallel/test-tls-wrap-event-emmiter.js @@ -0,0 +1,16 @@ +'use strict'; + +/* + * Issue: https://github.com/nodejs/node/issues/3655 + * Test checks if we get exception instead of runtime error + */ + +require('../common'); +const assert = require('assert'); + +const TlsSocket = require('tls').TLSSocket; +const EventEmitter = require('events').EventEmitter; +assert.throws( + () => { new TlsSocket(new EventEmitter()); }, + /^TypeError: this\.stream\.pause is not a function/ +); |