★ wanayoo — archive 1999 https://github.com/nodejs/node/commit/ced7f67fbbNouvelle recherche | Portail wanayoo
Skip to content
Permalink
Browse files
http: make ClientRequest#setTimeout() noop at end
Originally discovered and resolved by @szmarczak.

PR-URL: #25536
Fixes: #25499
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
  • Loading branch information
timdp authored and MylesBorins committed May 16, 2019
1 parent f8800c9 commit ced7f67fbb4d3d07653f42c885b438bce99cccc8
Showing with 37 additions and 0 deletions.
  1. +4 −0 lib/_http_client.js
  2. +33 −0 test/parallel/test-http-client-set-timeout-after-end.js
@@ -727,6 +727,10 @@ function _deferToConnect(method, arguments_, cb) {
}

ClientRequest.prototype.setTimeout = function setTimeout(msecs, callback) {
if (this._ended) {
return this;
}

listenSocketTimeout(this);
msecs = validateTimerDuration(msecs);
if (callback) this.once('timeout', callback);
@@ -0,0 +1,33 @@
'use strict';

// Test https://github.com/nodejs/node/issues/25499 fix.

const { mustCall } = require('../common');

const { Agent, createServer, get } = require('http');
const { strictEqual } = require('assert');

const server = createServer(mustCall((req, res) => {
res.end();
}));

server.listen(0, () => {
const agent = new Agent({ keepAlive: true, maxSockets: 1 });
const port = server.address().port;

let socket;

const req = get({ agent, port }, (res) => {
res.on('end', () => {
strictEqual(req.setTimeout(0), req);
strictEqual(socket.listenerCount('timeout'), 0);
agent.destroy();
server.close();
});
res.resume();
});

req.on('socket', (sock) => {
socket = sock;
});
});

0 comments on commit ced7f67

Please sign in to comment.