• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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