| 'use strict'; |
| const common = require('../common'); |
| const assert = require('assert'); |
| const net = require('net'); |
| |
| const server = net.createServer({ |
| keepAlive: true, |
| keepAliveInitialDelay: 1000 |
| }, common.mustCall((socket) => { |
| const setKeepAlive = socket._handle.setKeepAlive; |
| socket._handle.setKeepAlive = common.mustCall((enable, initialDelay) => { |
| assert.strictEqual(enable, true); |
| assert.match(String(initialDelay), /^2|3$/); |
| return setKeepAlive.call(socket._handle, enable, initialDelay); |
| }, 2); |
| socket.setKeepAlive(true, 1000); |
| socket.setKeepAlive(true, 2000); |
| socket.setKeepAlive(true, 3000); |
| socket.destroy(); |
| server.close(); |
| })).listen(0, common.mustCall(() => { |
| net.connect(server.address().port); |
| })); |
| |
| const onconnection = server._handle.onconnection; |
| server._handle.onconnection = common.mustCall((err, clientHandle) => { |
| const setKeepAlive = clientHandle.setKeepAlive; |
| clientHandle.setKeepAlive = common.mustCall((enable, initialDelayMsecs) => { |
| assert.strictEqual(enable, server.keepAlive); |
| assert.strictEqual(initialDelayMsecs, server.keepAliveInitialDelay); |
| setKeepAlive.call(clientHandle, enable, initialDelayMsecs); |
| clientHandle.setKeepAlive = setKeepAlive; |
| }); |
| onconnection.call(server._handle, err, clientHandle); |
| }); |