tls: forward keepAlive, keepAliveInitialDelay, noDelay to socket · nodejs/node@bf1ed7e
1+// Flags: --expose-internals
2+'use strict';
3+4+const common = require('../common');
5+6+// This test verifies that tls.connect() forwards keepAlive,
7+// keepAliveInitialDelay, and noDelay options to the underlying socket.
8+9+if (!common.hasCrypto)
10+common.skip('missing crypto');
11+12+const assert = require('assert');
13+const tls = require('tls');
14+const fixtures = require('../common/fixtures');
15+const {
16+ kSetNoDelay,
17+ kSetKeepAlive,
18+ kSetKeepAliveInitialDelay,
19+} = require('internal/net');
20+21+const key = fixtures.readKey('agent1-key.pem');
22+const cert = fixtures.readKey('agent1-cert.pem');
23+24+// Test: keepAlive, keepAliveInitialDelay, and noDelay
25+{
26+const server = tls.createServer({ key, cert }, (socket) => {
27+socket.end();
28+});
29+30+server.listen(0, common.mustCall(() => {
31+const socket = tls.connect({
32+port: server.address().port,
33+rejectUnauthorized: false,
34+keepAlive: true,
35+keepAliveInitialDelay: 1000,
36+noDelay: true,
37+}, common.mustCall(() => {
38+assert.strictEqual(socket[kSetKeepAlive], true);
39+assert.strictEqual(socket[kSetKeepAliveInitialDelay], 1);
40+assert.strictEqual(socket[kSetNoDelay], true);
41+socket.destroy();
42+server.close();
43+}));
44+}));
45+}
46+47+// Test: defaults (options not set)
48+{
49+const server = tls.createServer({ key, cert }, (socket) => {
50+socket.end();
51+});
52+53+server.listen(0, common.mustCall(() => {
54+const socket = tls.connect({
55+port: server.address().port,
56+rejectUnauthorized: false,
57+}, common.mustCall(() => {
58+assert.strictEqual(socket[kSetKeepAlive], false);
59+assert.strictEqual(socket[kSetKeepAliveInitialDelay], 0);
60+assert.strictEqual(socket[kSetNoDelay], false);
61+socket.destroy();
62+server.close();
63+}));
64+}));
65+}