aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/_tls_wrap.js9
-rw-r--r--test/parallel/test-tls-wrap-event-emmiter.js16
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/
+);