From 533c6deb7901fba48df4db8c7adfbd42a6d2fe7a Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 18 Jul 2018 14:28:42 -0700 Subject: [PATCH] Move cancellation files to own dir Fixes #53423 --- .../src/typescriptServiceClient.ts | 2 +- .../src/utils/electron.ts | 26 ++++++++++++++----- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/extensions/typescript-language-features/src/typescriptServiceClient.ts b/extensions/typescript-language-features/src/typescriptServiceClient.ts index c5666b895dc..c5061316b7a 100644 --- a/extensions/typescript-language-features/src/typescriptServiceClient.ts +++ b/extensions/typescript-language-features/src/typescriptServiceClient.ts @@ -974,7 +974,7 @@ export default class TypeScriptServiceClient implements ITypeScriptServiceClient } if (this.apiVersion.gte(API.v222)) { - this.cancellationPipeName = electron.getTempSock('tscancellation'); + this.cancellationPipeName = electron.getTempFile('tscancellation'); args.push('--cancellationPipeName', this.cancellationPipeName + '*'); } diff --git a/extensions/typescript-language-features/src/utils/electron.ts b/extensions/typescript-language-features/src/utils/electron.ts index 34a6534f8ec..46129f60f0e 100644 --- a/extensions/typescript-language-features/src/utils/electron.ts +++ b/extensions/typescript-language-features/src/utils/electron.ts @@ -4,9 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import Logger from './logger'; -import { getTempFile, makeRandomHexString } from './temp'; +import * as temp from './temp'; import path = require('path'); -import os = require('os'); +import fs = require('fs'); import net = require('net'); import cp = require('child_process'); @@ -15,13 +15,25 @@ export interface IForkOptions { execArgv?: string[]; } -export function getTempSock(prefix: string): string { - const fullName = `vscode-${prefix}-${makeRandomHexString(20)}`; - return getTempFile(fullName + '.sock'); +const getRootTempDir = (() => { + let dir: string | undefined; + return () => { + if (!dir) { + dir = temp.getTempFile(`vscode-typescript`); + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir); + } + } + return dir; + }; +})(); + +export function getTempFile(prefix: string): string { + return path.join(getRootTempDir(), `${prefix}-${temp.makeRandomHexString(20)}.tmp`); } function generatePipeName(): string { - return getPipeName(makeRandomHexString(40)); + return getPipeName(temp.makeRandomHexString(40)); } function getPipeName(name: string): string { @@ -31,7 +43,7 @@ function getPipeName(name: string): string { } // Mac/Unix: use socket file - return path.join(os.tmpdir(), fullName + '.sock'); + return path.join(getRootTempDir(), fullName + '.sock'); } function generatePatchedEnv( -- GitLab