http: refactor headersTimeout and requestTimeout logic

PR-URL: https://github.com/nodejs/node/pull/41263
Fixes: https://github.com/nodejs/node/issues/33440
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Robert Nagy <ronagy@icloud.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Darshan Sen <raisinten@gmail.com>
This commit is contained in:
Paolo Insogna 2022-04-13 16:47:59 +02:00 committed by GitHub
parent 9d6af7d1fe
commit 3caa2c1a00
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
33 changed files with 858 additions and 413 deletions

View file

@ -8,16 +8,20 @@ const { connect } = require('net');
// This test validates that the server returns 408
// after server.requestTimeout if the client
// pauses before start sending the request.
let sendDelayedRequestHeaders;
const server = createServer(common.mustNotCall());
const requestTimeout = common.platformTimeout(1000);
const server = createServer({
headersTimeout: 0,
requestTimeout,
keepAliveTimeout: 0,
connectionsCheckingInterval: common.platformTimeout(250),
}, common.mustNotCall());
server.on('connection', common.mustCall(() => {
assert.strictEqual(typeof sendDelayedRequestHeaders, 'function');
sendDelayedRequestHeaders();
}));
// 0 seconds is the default
assert.strictEqual(server.requestTimeout, 0);
const requestTimeout = common.platformTimeout(1000);
server.requestTimeout = requestTimeout;
assert.strictEqual(server.requestTimeout, requestTimeout);
server.listen(0, common.mustCall(() => {
@ -28,8 +32,7 @@ server.listen(0, common.mustCall(() => {
response += chunk.toString('utf-8');
}));
const errOrEnd = common.mustCall(function(err) {
console.log(err);
const errOrEnd = common.mustSucceed(function(err) {
assert.strictEqual(
response,
'HTTP/1.1 408 Request Timeout\r\nConnection: close\r\n\r\n'
@ -48,6 +51,6 @@ server.listen(0, common.mustCall(() => {
client.write('Content-Length: 20\r\n');
client.write('Connection: close\r\n\r\n');
client.write('12345678901234567890\r\n\r\n');
}, common.platformTimeout(2000)).unref();
}, common.platformTimeout(requestTimeout * 2)).unref();
});
}));