mirror of
https://github.com/nodejs/node.git
synced 2025-05-07 17:32:22 +00:00

Timing out and closing the socket after two minutes have elapsed is surprising and problematic for users. This behavior was specific to Node.js, and doesn't seem to be common in other language runtimes. Fixes: https://github.com/nodejs/node/issues/27556 PR-URL: https://github.com/nodejs/node/pull/27558 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Rich Trott <rtrott@gmail.com>
58 lines
1.3 KiB
JavaScript
58 lines
1.3 KiB
JavaScript
// Flags: --expose_internals
|
|
|
|
'use strict';
|
|
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
const { fork } = require('child_process');
|
|
const http = require('http');
|
|
|
|
if (process.argv[2] === 'child') {
|
|
process.once('message', (req, socket) => {
|
|
const res = new http.ServerResponse(req);
|
|
res.assignSocket(socket);
|
|
res.end();
|
|
});
|
|
|
|
process.send('ready');
|
|
return;
|
|
}
|
|
|
|
const { kTimeout } = require('internal/timers');
|
|
|
|
let child;
|
|
let socket;
|
|
|
|
const server = http.createServer(common.mustCall((req, res) => {
|
|
const r = {
|
|
method: req.method,
|
|
headers: req.headers,
|
|
path: req.path,
|
|
httpVersionMajor: req.httpVersionMajor,
|
|
query: req.query,
|
|
};
|
|
|
|
socket = res.socket;
|
|
child.send(r, socket);
|
|
server.close();
|
|
}));
|
|
|
|
server.listen(0, common.mustCall(() => {
|
|
child = fork(__filename, [ 'child' ]);
|
|
child.once('message', (msg) => {
|
|
assert.strictEqual(msg, 'ready');
|
|
const req = http.request({
|
|
port: server.address().port,
|
|
}, common.mustCall((res) => {
|
|
res.on('data', () => {});
|
|
res.on('end', common.mustCall(() => {
|
|
assert.strictEqual(socket[kTimeout], null);
|
|
assert.strictEqual(socket.parser, null);
|
|
assert.strictEqual(socket._httpMessage, null);
|
|
}));
|
|
}));
|
|
|
|
req.end();
|
|
});
|
|
}));
|