summaryrefslogtreecommitdiff
path: root/test/parallel/test-http-parser-timeout-reset.js
blob: 1ba72d865f73fb9038fd8a99666aee5633573a76 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
'use strict';
const common = require('../common');

const net = require('net');
const { HTTPParser } = process.binding('http_parser');

const server = net.createServer((socket) => {
  socket.write('HTTP/1.1 200 OK\r\n');
  socket.write('Transfer-Encoding: chunked\r\n\r\n');
  setTimeout(() => {
    socket.write('1\r\n');
    socket.write('\n\r\n');
    setTimeout(() => {
      socket.write('1\r\n');
      socket.write('\n\r\n');
      setImmediate(() => {
        socket.destroy();
        server.close();
      });
    }, 500);
  }, 500);
}).listen(0, () => {
  const socket = net.connect(server.address().port);
  const parser = new HTTPParser(HTTPParser.RESPONSE, false);
  parser.initialize(
    HTTPParser.RESPONSE,
    {},
    0,
    false,
    1e3
  );

  parser[HTTPParser.kOnTimeout] = common.mustNotCall();

  parser[HTTPParser.kOnHeaders] = common.mustNotCall();

  parser[HTTPParser.kOnExecute] = common.mustCallAtLeast(3);

  parser[HTTPParser.kOnHeadersComplete] = common.mustCall();

  parser[HTTPParser.kOnBody] = common.mustCall(2);

  parser[HTTPParser.kOnMessageComplete] = common.mustNotCall();

  parser.consume(socket._handle);
});