1// Flags: --expose-internals 2 3'use strict'; 4const common = require('../common'); 5const { kTimeout, TIMEOUT_MAX } = require('internal/timers'); 6 7if (!common.hasCrypto) 8 common.skip('missing crypto'); 9 10const assert = require('assert'); 11const tls = require('tls'); 12const net = require('net'); 13const fixtures = require('../common/fixtures'); 14 15const options = { 16 key: fixtures.readKey('agent1-key.pem'), 17 cert: fixtures.readKey('agent1-cert.pem') 18}; 19 20const server = tls.createServer(options, common.mustCall((c) => { 21 setImmediate(() => { 22 c.write('hello', () => { 23 setImmediate(() => { 24 c.destroy(); 25 server.close(); 26 }); 27 }); 28 }); 29})); 30 31let socket; 32let lastIdleStart; 33 34server.listen(0, () => { 35 socket = net.connect(server.address().port, function() { 36 const s = socket.setTimeout(TIMEOUT_MAX, function() { 37 throw new Error('timeout'); 38 }); 39 assert.ok(s instanceof net.Socket); 40 41 assert.notStrictEqual(socket[kTimeout]._idleTimeout, -1); 42 lastIdleStart = socket[kTimeout]._idleStart; 43 44 const tsocket = tls.connect({ 45 socket: socket, 46 rejectUnauthorized: false 47 }); 48 tsocket.resume(); 49 }); 50}); 51 52process.on('exit', () => { 53 assert.strictEqual(socket[kTimeout]._idleTimeout, -1); 54 assert(lastIdleStart < socket[kTimeout]._idleStart); 55}); 56