*/
detachSshClient(): void {
this.sshClient.removeListener('close', this._sshCloseListener);
this.sshClient.removeListener('error', this._sshErrorListener);
}
relaySend(data: string): void {
Frontier kind: Code frontier
unlabeled · c_2b689ea667cb
8 tests · 11078 LOC · 48 files · introduces 0 tests · 43 LOC · 2 files
The orange circle is the focus. Violet and green circles are every ancestor and descendant, broader and narrower, at any distance; blue squares and pink diamonds are the introduced files and exact introduced tests of every visible concept, not only the focus's. Arrows point from broader to narrower concepts and bridge only concepts omitted from this view. Undirected links show source or test introduction. Concept and file size follows LOC; exact test nodes use test-count units.
Introduced files, introduced tests, and structurally relevant concept specialization
In the embedded map, ordinary wheel input scrolls the page; use the visible controls to zoom and drag to pan. Open the full-screen map for canvas navigation: wheel pans, Ctrl/Command plus wheel zooms, and arrow keys pan when this region is focused. On touch screens, open the full-screen map to pan or pinch. If JavaScript or WebGL is unavailable, use the native relationship evidence on this page.
Graph controls are ready.
Interactive rendering requires JavaScript and WebGL. Use the native relationship evidence on this page while the interactive map is unavailable.
Every exact file and test below is linked only from the concept that introduces it.
mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostService.test|title=SSHRemoteAgentHostMainService - connect flow messages from superseded relay still arrive (only close is suppressed)|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostService.test|title=SSHRemoteAgentHostMainService - connect flow reconnect does not fire onDidRelayClose for superseded relay|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostService.test|title=SSHRemoteAgentHostMainService - connect flow reconnect suppresses synchronous close from old relay during replacement|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostService.test|title=SSHRemoteAgentHostMainService - connect flow creates fresh relay on reconnect without restarting agent|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostService.test|title=SSHRemoteAgentHostMainService - connect flow reconnect preserves connection token and address|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostService.test|title=SSHRemoteAgentHostMainService - connect flow reconnect removes old close/error listeners from shared SSH client|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers resolveRemotePlatform detects Linux amd64|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers resolveRemotePlatform detects Linux x64|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers resolveRemotePlatform handles whitespace in uname output|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers writeAgentHostState writes lockfile with canonical metadata JSON|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers writeAgentHostState writes null connectionToken when undefined|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers findRunningAgentHost reads from the per-quality launcher lockfile path|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers findRunningAgentHost returns notFound when no state file exists|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers findRunningAgentHost returns notFound when state file is empty|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers getAgentHostLockfile keys lockfile name on quality|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers getAgentHostLockfile returns path under the launcher data dir|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers getRemoteCLIArchiveName falls back to code-insiders for unknown qualities|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers getRemoteCLIArchiveName returns code for stable|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers getRemoteCLIArchiveName returns code-exploration for exploration|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers getRemoteCLIArchiveName returns code-insiders for insider|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers validateShellToken accepts alphanumeric strings|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers validateShellToken accepts dots, dashes, and underscores|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers shellEscape escapes embedded single quotes|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers shellEscape handles empty string|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers shellEscape passes through special chars safely wrapped|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/agentHost/test/node/sshRemoteAgentHostHelpers.test|title=SSH Remote Agent Host Helpers shellEscape wraps simple string in single quotes|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/lifecycle.test|title=Lifecycle Action bar has broken accessibility #100273|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/lifecycle.test|title=Lifecycle dispose disposable array|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/workbench/contrib/languageStatus/test/common/languageStatusDedupe.test|title=LanguageStatus - Dedicated Entry Deduplication creates new entry when none exists|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/workbench/contrib/languageStatus/test/common/languageStatusDedupe.test|title=LanguageStatus - Dedicated Entry Deduplication duplicate IDs with existing entry - fixed version reuses existing|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/workbench/contrib/languageStatus/test/common/languageStatusDedupe.test|title=LanguageStatus - Dedicated Entry Deduplication duplicate status IDs - buggy version leaks entry|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/workbench/contrib/languageStatus/test/common/languageStatusDedupe.test|title=LanguageStatus - Dedicated Entry Deduplication duplicate status IDs - fixed version reuses entry from current update|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/workbench/contrib/languageStatus/test/common/languageStatusDedupe.test|title=LanguageStatus - Dedicated Entry Deduplication mixed unique and duplicate IDs|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/workbench/contrib/languageStatus/test/common/languageStatusDedupe.test|title=LanguageStatus - Dedicated Entry Deduplication reuses existing entry from previous update|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/charCode.test|title=CharCode has good values|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/path.test|title=Paths (Node Implementation) path|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uri.test|title=URI File paths containing apostrophes break URI parsing and cannot be opened #276075|occurrence=1mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/uri.test|title=URI URI#file, win-speciale|occurrence=1Every collected test enters the hierarchy at exactly one concept.
No tests are introduced at this concept. Its intent tests are introduced by other concepts.
Every collected source range enters the hierarchy at exactly one concept.
2 files ranked by introduced lines: 43 introduced LOC across 5 ranges. Expand a file to inspect source; the > gutter marks introduced lines.
*/
detachSshClient(): void {
this.sshClient.removeListener('close', this._sshCloseListener);
this.sshClient.removeListener('error', this._sshErrorListener);
}
relaySend(data: string): void {
if (existing) {
if (replaceRelay) {
// the same dispose-and-recreate pattern as TunnelAgentHostMainService.
// The SSH client is detached so only the WebSocket relay is closed.
this._logService.info(`${LOG_PREFIX} Reconnecting relay for existing SSH tunnel ${connectionKey}`);
const { sshClient, remotePort, connectionToken } = existing;
// Remove from map and detach SSH client before disposing so
// the old relay's close handler (conn?.dispose()) is a no-op.
this._connections.deleteAndLeak(connectionKey);
existing.detachSshClient();
existing.dispose();
// Create fresh relay and connection. If relay creation fails,
// clean up the detached SSH client so it doesn't leak.
const connectionId = connectionKey;
try {
let conn: SSHConnection | undefined; // eslint-disable-line prefer-const
// Bound the relay creation: a silently dead SSH client
// (TCP half-open, ssh2 keepalive hasn't fired yet) can
// leave forwardOut's callback unfired, hanging the whole
// promise chain. raceTimeout returns undefined on timeout.
const timeoutMs = this.relayCreationTimeoutMs;
const relay = await raceTimeout(
this._createWebSocketRelay(
sshClient, '127.0.0.1', remotePort, connectionToken,
(data: string) => this._onDidRelayMessage.fire({ connectionId, data }),
() => { conn?.dispose(); },
),
timeoutMs,
);
if (!relay) {
throw new Error(`SSH relay creation timed out after ${timeoutMs}ms (SSH client appears unresponsive)`);
sshConfigHost: config.sshConfigHost,
};
sshClient.end();
this._onDidRelayClose.fire(connectionId);
*/
deleteAndLeak(key: K): V | undefined {
if (value) {
setParentOfDisposable(value, null);
}
this._store.delete(key);
return value;
}
keys(): IterableIterator<K> {