diff options
author | Fedor Indutny <fedor@indutny.com> | 2015-03-03 15:17:43 -0500 |
---|---|---|
committer | Fedor Indutny <fedor@indutny.com> | 2015-03-03 17:05:55 -0500 |
commit | 7b3b8acfa6a9de825b95c6c5a12eb965c6e0c01d (patch) | |
tree | 0e23404345a81c9ce7f4f4847668cbb985ea4103 /test/parallel/test-tls-on-empty-socket.js | |
parent | e1bf6709dc720fa06359ccd745d81cafc37dbd39 (diff) | |
download | android-node-v8-7b3b8acfa6a9de825b95c6c5a12eb965c6e0c01d.tar.gz android-node-v8-7b3b8acfa6a9de825b95c6c5a12eb965c6e0c01d.tar.bz2 android-node-v8-7b3b8acfa6a9de825b95c6c5a12eb965c6e0c01d.zip |
tls: accept empty `net.Socket`s
Accept `new net.Socket()` as a `socket` option to `tls.connect()`
without triggering an assertion error in C++.
This is done by wrapping it into a JSStream to ensure that there will be
a handle at the time of wrapping the socket into TLSSocket.
Fix: https://github.com/iojs/io.js/issues/987
PR-URL: https://github.com/iojs/io.js/pull/1046
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Rod Vagg <rod@vagg.org>
Diffstat (limited to 'test/parallel/test-tls-on-empty-socket.js')
-rw-r--r-- | test/parallel/test-tls-on-empty-socket.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/test/parallel/test-tls-on-empty-socket.js b/test/parallel/test-tls-on-empty-socket.js new file mode 100644 index 0000000000..a6db26b926 --- /dev/null +++ b/test/parallel/test-tls-on-empty-socket.js @@ -0,0 +1,41 @@ +if (!process.versions.openssl) { + console.error('Skipping because node compiled without OpenSSL.'); + process.exit(0); +} + +var assert = require('assert'); +var fs = require('fs'); +var net = require('net'); +var tls = require('tls'); + +var common = require('../common'); + +var out = ''; + +var server = tls.createServer({ + key: fs.readFileSync(common.fixturesDir + '/keys/agent1-key.pem'), + cert: fs.readFileSync(common.fixturesDir + '/keys/agent1-cert.pem') +}, function(c) { + c.end('hello'); +}).listen(common.PORT, function() { + var socket = new net.Socket(); + + var s = tls.connect({ + socket: socket, + rejectUnauthorized: false + }, function() { + s.on('data', function(chunk) { + out += chunk; + }); + s.on('end', function() { + s.destroy(); + server.close(); + }); + }); + + socket.connect(common.PORT); +}); + +process.on('exit', function() { + assert.equal(out, 'hello'); +}); |