1'use strict'; 2 3const common = require('../common'); 4const http = require('http'); 5const net = require('net'); 6const { finished } = require('stream'); 7 8const headers = 9 'GET / HTTP/1.1\r\n' + 10 'Host: localhost\r\n' + 11 'Connection: keep-alive\r\n' + 12 'Agent: node\r\n'; 13 14const baseTimeout = 1000; 15 16const server = http.createServer(common.mustCall((req, res) => { 17 req.resume(); 18 res.writeHead(200); 19 res.end(); 20}, 2)); 21 22server.keepAliveTimeout = 10 * baseTimeout; 23server.headersTimeout = baseTimeout; 24 25server.once('timeout', common.mustNotCall((socket) => { 26 socket.destroy(); 27})); 28 29server.listen(0, () => { 30 const client = net.connect(server.address().port); 31 32 // first request 33 client.write(headers); 34 client.write('\r\n'); 35 36 setTimeout(() => { 37 // second request 38 client.write(headers); 39 // `headersTimeout` doesn't seem to fire if request 40 // is sent altogether. 41 setTimeout(() => { 42 client.write('\r\n'); 43 client.end(); 44 }, 10); 45 }, baseTimeout + 10); 46 47 client.resume(); 48 finished(client, common.mustCall((err) => { 49 server.close(); 50 })); 51}); 52