aboutsummaryrefslogtreecommitdiff
path: root/test/parallel/test-tls-on-empty-socket.js
diff options
context:
space:
mode:
authorFedor Indutny <fedor@indutny.com>2015-03-03 15:17:43 -0500
committerFedor Indutny <fedor@indutny.com>2015-03-03 17:05:55 -0500
commit7b3b8acfa6a9de825b95c6c5a12eb965c6e0c01d (patch)
tree0e23404345a81c9ce7f4f4847668cbb985ea4103 /test/parallel/test-tls-on-empty-socket.js
parente1bf6709dc720fa06359ccd745d81cafc37dbd39 (diff)
downloadandroid-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.js41
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');
+});