We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent fd63c27 commit 003121cCopy full SHA for 003121c
2 files changed
src/inspector_io.cc
@@ -353,6 +353,9 @@ std::optional<std::string> InspectorIoDelegate::GetTargetSessionId(
353
std::string_view view(message.data(), message.size());
354
std::unique_ptr<protocol::DictionaryValue> value =
355
protocol::DictionaryValue::cast(JsonUtil::parseJSON(view));
356
+ if (!value) {
357
+ return std::nullopt;
358
+ }
359
protocol::String target_session_id;
360
protocol::Value* target_session_id_value = value->get("sessionId");
361
if (target_session_id_value) {
test/parallel/test-inspector-invalid-protocol.js
@@ -0,0 +1,40 @@
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());
0 commit comments