• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2
3const common = require('../common');
4if (!common.hasCrypto)
5  common.skip('missing crypto');
6const assert = require('assert');
7const http2 = require('http2');
8
9const server = http2.createServer();
10const data = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5]);
11let session;
12
13server.on('stream', common.mustCall((stream) => {
14  session = stream.session;
15  session.on('close', common.mustCall());
16  session.goaway(0, 0, data);
17  stream.respond();
18  stream.end();
19}));
20server.on('close', common.mustCall());
21
22server.listen(0, () => {
23  const client = http2.connect(`http://localhost:${server.address().port}`);
24  client.once('goaway', common.mustCall((code, lastStreamID, buf) => {
25    assert.deepStrictEqual(code, 0);
26    assert.deepStrictEqual(lastStreamID, 1);
27    assert.deepStrictEqual(data, buf);
28    session.close();
29    server.close();
30  }));
31  const req = client.request();
32  req.resume();
33  req.on('end', common.mustCall());
34  req.on('close', common.mustCall());
35  req.end();
36});
37