cdp-tunnel 3.3.6 → 3.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -504,6 +504,7 @@ var SpecialHandler = (function() {
|
|
|
504
504
|
var targetId = params && params.targetId;
|
|
505
505
|
if (targetId) {
|
|
506
506
|
var tabId = state.getTabIdByTargetId(targetId);
|
|
507
|
+
Logger.info('[CloseTarget] targetId=' + targetId.slice(0,12) + ' tabId=' + tabId);
|
|
507
508
|
if (tabId) {
|
|
508
509
|
var closeClientId = state.getClientIdByTabId(tabId);
|
|
509
510
|
return new Promise(function(resolve) {
|
package/package.json
CHANGED
|
@@ -366,13 +366,11 @@ class PortPoolManager {
|
|
|
366
366
|
}
|
|
367
367
|
}
|
|
368
368
|
// 竞态处理:targetCreated/attachedToTarget 在 createTarget 响应之前到达
|
|
369
|
-
//
|
|
370
|
-
// 同时也对 attachedToTarget 放行(它的 targetId 和 targetCreated 一样)
|
|
369
|
+
// 只用 pendingCreate 精确匹配,不广播(广播会导致 sessionId 串)
|
|
371
370
|
if (msg.method === 'Target.targetCreated' || msg.method === 'Target.attachedToTarget') {
|
|
372
371
|
for (let pi = 0; pi < this.portSessions.length; pi++) {
|
|
373
372
|
const sess = this.portSessions[pi];
|
|
374
373
|
if (sess && sess.pendingCreate) {
|
|
375
|
-
// 提前注册
|
|
376
374
|
sess.targetIds.add(targetId);
|
|
377
375
|
sess.targetUrls.set(targetId, 'about:blank');
|
|
378
376
|
this.targetToPort.set(targetId, pi);
|
|
@@ -381,11 +379,8 @@ class PortPoolManager {
|
|
|
381
379
|
return true;
|
|
382
380
|
}
|
|
383
381
|
}
|
|
384
|
-
//
|
|
385
|
-
//
|
|
386
|
-
for (let pi = 0; pi < this.portSessions.length; pi++) {
|
|
387
|
-
this._broadcastToPort(pi, msg);
|
|
388
|
-
}
|
|
382
|
+
// pendingCreate 没匹配到——记录但不广播(避免 sessionId 串)
|
|
383
|
+
// targetId 会在 createTarget 响应时注册
|
|
389
384
|
return true;
|
|
390
385
|
}
|
|
391
386
|
}
|
|
@@ -397,25 +392,11 @@ class PortPoolManager {
|
|
|
397
392
|
this._broadcastToPort(portIndex, msg);
|
|
398
393
|
return true;
|
|
399
394
|
}
|
|
400
|
-
//
|
|
401
|
-
// 但事件已经来了。广播给所有端口池 client,确保不丢。
|
|
402
|
-
// 对齐直连 Chrome——所有 session 事件都广播给所有连接。
|
|
403
|
-
for (let pi = 0; pi < this.portSessions.length; pi++) {
|
|
404
|
-
if (this.portSessions[pi]) {
|
|
405
|
-
this._broadcastToPort(pi, msg);
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
return true;
|
|
395
|
+
// sessionId 未注册——交给主 proxy 处理(不吞掉)
|
|
409
396
|
}
|
|
410
397
|
|
|
411
|
-
//
|
|
412
|
-
|
|
413
|
-
for (let pi = 0; pi < this.portSessions.length; pi++) {
|
|
414
|
-
if (this.portSessions[pi]) {
|
|
415
|
-
this._broadcastToPort(pi, msg);
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
return true;
|
|
398
|
+
// 其他未匹配的事件——交给主 proxy
|
|
399
|
+
return false;
|
|
419
400
|
}
|
|
420
401
|
|
|
421
402
|
return false; // 不是端口池的消息
|