test: add a test for tls.Socket
with allowHalfOpen
This test ensures that a tls client socket using `StreamWrap` with `allowHalfOpen` option won't hang. PR-URL: https://github.com/nodejs/node/pull/23866 Refs: https://github.com/nodejs/node/pull/23654 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
441555866b
commit
aa82a21c3a
53
test/parallel/test-tls-net-socket-keepalive.js
Normal file
53
test/parallel/test-tls-net-socket-keepalive.js
Normal file
@ -0,0 +1,53 @@
|
||||
'use strict';
|
||||
|
||||
const common = require('../common');
|
||||
if (!common.hasCrypto)
|
||||
common.skip('missing crypto');
|
||||
|
||||
const fixtures = require('../common/fixtures');
|
||||
const tls = require('tls');
|
||||
const net = require('net');
|
||||
|
||||
// This test ensures that when tls sockets are created with `allowHalfOpen`,
|
||||
// they won't hang.
|
||||
const key = fixtures.readKey('agent1-key.pem');
|
||||
const cert = fixtures.readKey('agent1-cert.pem');
|
||||
const ca = fixtures.readKey('ca1-cert.pem');
|
||||
const options = {
|
||||
key,
|
||||
cert,
|
||||
ca: [ca],
|
||||
};
|
||||
|
||||
const server = tls.createServer(options, common.mustCall((conn) => {
|
||||
conn.write('hello');
|
||||
conn.on('data', common.mustCall());
|
||||
conn.end();
|
||||
})).listen(0, common.mustCall(() => {
|
||||
const netSocket = new net.Socket({
|
||||
allowHalfOpen: true,
|
||||
});
|
||||
|
||||
const socket = tls.connect({
|
||||
socket: netSocket,
|
||||
rejectUnauthorized: false,
|
||||
});
|
||||
|
||||
const { port, address } = server.address();
|
||||
|
||||
// Doing `net.Socket.connect()` after `tls.connect()` will make tls module
|
||||
// wrap the socket in StreamWrap.
|
||||
netSocket.connect({
|
||||
port,
|
||||
address,
|
||||
});
|
||||
|
||||
socket.on('end', common.mustCall());
|
||||
socket.on('data', common.mustCall());
|
||||
socket.on('close', common.mustCall(() => {
|
||||
server.close();
|
||||
}));
|
||||
|
||||
socket.write('hello');
|
||||
socket.end();
|
||||
}));
|
Loading…
x
Reference in New Issue
Block a user