From af24da976b92834a5383c44b0ee89f7e278035e4 Mon Sep 17 00:00:00 2001 From: Lauri Nevala Date: Tue, 9 Jun 2020 13:16:39 +0300 Subject: [PATCH] Kill shell process by pid on Windows (#411) Signed-off-by: Lauri Nevala --- src/main/shell-session.ts | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/main/shell-session.ts b/src/main/shell-session.ts index bc2235ad36..7efa43b8bf 100644 --- a/src/main/shell-session.ts +++ b/src/main/shell-session.ts @@ -159,7 +159,7 @@ export class ShellSession extends EventEmitter { } protected exit(code = 1000) { - this.websocket.close(code) + if (this.websocket.readyState == this.websocket.OPEN) this.websocket.close(code) this.emit('exit') } @@ -179,12 +179,25 @@ export class ShellSession extends EventEmitter { protected exitProcessOnWebsocketClose() { this.websocket.on("close", () => { - if (this.shellProcess) { - this.shellProcess.kill(); - } + this.killShellProcess() }) } + protected killShellProcess(){ + if(this.running) { + // On Windows we need to kill the shell process by pid, since Lens won't respond after a while if using `this.shellProcess.kill()` + if (process.platform == "win32") { + try { + process.kill(this.shellProcess.pid) + } catch(e) { + return + } + } else { + this.shellProcess.kill() + } + } + } + protected sendResponse(msg: string) { this.websocket.send("1" + Buffer.from(msg).toString("base64")) }