inspector: fix crash when receiving non json message · nodejs/node@003121c
1+'use strict';
2+const common = require('../common');
3+common.skipIfInspectorDisabled();
4+const { spawn } = require('node:child_process');
5+const assert = require('node:assert');
6+7+(async () => {
8+const child = spawn(
9+process.execPath,
10+['--inspect-wait=0', '-e', "console.log('test');"],
11+{}
12+);
13+14+const url = await new Promise((resolve) => {
15+child.stderr.on('data', (data) => {
16+const msg = data.toString();
17+const match = msg.match(/ws:\/\/127\.0\.0\.1:(\d+)\/([a-f0-9-]+)/);
18+if (match) {
19+child.stderr.removeAllListeners('data');
20+return resolve(match[0]);
21+}
22+});
23+});
24+25+child.once('exit', (_, signal) => {
26+assert.strictEqual(signal, 'SIGTERM');
27+});
28+29+const socket = new WebSocket(url);
30+31+socket.addEventListener('open', common.mustCall(() => {
32+socket.send('This is not a valid protocol message');
33+}));
34+35+socket.addEventListener('message', common.mustCall((event) => {
36+assert.ok(Object.keys(JSON.parse(event.data)).includes('error'));
37+socket.close();
38+child.kill();
39+}));
40+})().then(common.mustCall());