1'use strict'; 2 3const common = require('../common'); 4const assert = require('assert'); 5const { createServer } = require('http'); 6const { connect } = require('net'); 7const { finished } = require('stream'); 8 9// This test validates that the 'timeout' event fires 10// after server.headersTimeout. 11 12const headers = 13 'GET / HTTP/1.1\r\n' + 14 'Host: localhost\r\n' + 15 'Agent: node\r\n'; 16 17const server = createServer(common.mustNotCall()); 18let sendCharEvery = 1000; 19 20// 60 seconds is the default 21assert.strictEqual(server.headersTimeout, 60 * 1000); 22 23// Pass a REAL env variable to shortening up the default 24// value which is 40s otherwise this is useful for manual 25// testing 26if (!process.env.REAL) { 27 sendCharEvery = common.platformTimeout(10); 28 server.headersTimeout = 2 * sendCharEvery; 29} 30 31server.once('timeout', common.mustCall((socket) => { 32 socket.destroy(); 33})); 34 35server.listen(0, common.mustCall(() => { 36 const client = connect(server.address().port); 37 client.write(headers); 38 client.write('X-CRASH: '); 39 40 const interval = setInterval(() => { 41 client.write('a'); 42 }, sendCharEvery); 43 44 client.resume(); 45 46 finished(client, common.mustCall((err) => { 47 clearInterval(interval); 48 server.close(); 49 })); 50})); 51