| 'use strict'; |
| const common = require('../common'); |
| |
| // This test ensures that `ClientRequest.prototype.setTimeout()` does |
| // not add a listener for the `'connect'` event to the socket if the |
| // socket is already connected. |
| |
| const assert = require('assert'); |
| const http = require('http'); |
| |
| // Maximum allowed value for timeouts. |
| const timeout = 2 ** 31 - 1; |
| |
| const server = http.createServer((req, res) => { |
| res.end(); |
| }); |
| |
| server.listen(0, common.mustCall(() => { |
| const agent = new http.Agent({ keepAlive: true, maxSockets: 1 }); |
| const options = { port: server.address().port, agent: agent }; |
| |
| doRequest(options, common.mustCall(() => { |
| const req = doRequest(options, common.mustCall(() => { |
| agent.destroy(); |
| server.close(); |
| })); |
| |
| req.on('socket', common.mustCall((socket) => { |
| assert.strictEqual(socket.listenerCount('connect'), 0); |
| })); |
| })); |
| })); |
| |
| function doRequest(options, callback) { |
| const req = http.get(options, (res) => { |
| res.on('end', callback); |
| res.resume(); |
| }); |
| |
| req.setTimeout(timeout); |
| return req; |
| } |