From a0bf7f5b134502205e8f626e76773076a96fc8f6 Mon Sep 17 00:00:00 2001 From: Mark Zuber Date: Wed, 22 Feb 2023 01:44:19 -0800 Subject: [PATCH] Add custom path for vscode-server socket files and named pipe length (#172481) * Add custom path for vscode-server socket files and named pipe length * Revert VSCODE_SOCKETS_DIR to XDG_RUNTIME_DIR behavior * :lipstick: --------- Co-authored-by: Benjamin Pasero --- src/vs/base/parts/ipc/node/ipc.net.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/vs/base/parts/ipc/node/ipc.net.ts b/src/vs/base/parts/ipc/node/ipc.net.ts index 455caa3efeb..0d083887afd 100644 --- a/src/vs/base/parts/ipc/node/ipc.net.ts +++ b/src/vs/base/parts/ipc/node/ipc.net.ts @@ -759,11 +759,20 @@ export function createStaticIPCHandle(directoryPath: string, type: string, versi // Mac/Unix: use socket file and prefer // XDG_RUNTIME_DIR over user data path // unless portable + // Trim the version and type values for + // the socket to prevent too large + // file names causing issues: + // https://unix.stackexchange.com/questions/367008/why-is-socket-path-length-limited-to-a-hundred-chars + + const versionForSocket = version.substr(0, 4); + const typeForSocket = type.substr(0, 6); + const scopeForSocket = scope.substr(0, 8); + let result: string; if (XDG_RUNTIME_DIR && !process.env['VSCODE_PORTABLE']) { - result = join(XDG_RUNTIME_DIR, `vscode-${scope.substr(0, 8)}-${version}-${type}.sock`); + result = join(XDG_RUNTIME_DIR, `vscode-${scopeForSocket}-${versionForSocket}-${typeForSocket}.sock`); } else { - result = join(directoryPath, `${version}-${type}.sock`); + result = join(directoryPath, `${versionForSocket}-${typeForSocket}.sock`); } // Validate length