'use strict'; const common = require('../common'); const http = require('http'); const net = require('net'); const { finished } = require('stream'); const headers = 'GET / HTTP/1.1\r\n' + 'Host: localhost\r\n' + 'Connection: keep-alive\r\n' + 'Agent: node\r\n'; let sendCharEvery = 1000; const server = http.createServer(common.mustCall((req, res) => { res.writeHead(200); res.end(); })); // Pass a REAL env variable to shortening up the default // value which is 40s otherwise this is useful for manual // testing if (!process.env.REAL) { sendCharEvery = common.platformTimeout(10); server.headersTimeout = 2 * sendCharEvery; } server.once('timeout', common.mustCall((socket) => { socket.destroy(); })); server.listen(0, () => { const client = net.connect(server.address().port); client.write(headers); // Finish the first request client.write('\r\n'); // second request client.write(headers); client.write('X-CRASH: '); const interval = setInterval(() => { client.write('a'); }, sendCharEvery); client.resume(); finished(client, common.mustCall((err) => { clearInterval(interval); server.close(); })); });