Skip to content

Commit a77140c

Browse files
committed
fix process killing
so we don't crash Atom anymore
1 parent bc95015 commit a77140c

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

lib/connection/process/basic.js

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export function get (path, args) {
2020

2121
export function get_ (path, args) {
2222
const env = customEnv()
23-
return getUnix(path, args, env)
23+
return getProcess(path, args, env)
2424
}
2525

2626
export function customEnv (env = process.env) {
@@ -43,7 +43,7 @@ export function customEnv (env = process.env) {
4343
return env
4444
}
4545

46-
function getUnix (path, args, env) {
46+
function getProcess (path, args, env) {
4747
return new Promise((resolve, reject) => {
4848
tcp.listen().then((port) => {
4949
paths.fullPath(path).then((path) => {
@@ -54,16 +54,27 @@ function getUnix (path, args, env) {
5454
rows: 30,
5555
env: env,
5656
cwd: cwd,
57-
useConpty: true
57+
useConpty: true,
58+
handleFlowControl: true
5859
})
5960

6061
let sock = socket(ty)
6162

62-
sock.catch((err) => reject(err))
63+
sock.catch((err) => {
64+
reject(err)
65+
})
6366

6467
let proc = {
6568
ty: ty,
66-
kill: () => ty.kill(),
69+
kill: () => {
70+
if (ty._readable || ty._writable) {
71+
try {
72+
ty.kill()
73+
} catch (err) {
74+
console.log(err);
75+
}
76+
}
77+
},
6778
interrupt: () => ty.write('\x03'),
6879
socket: sock,
6980
onExit: (f) => ty.on('exit', f),
@@ -84,17 +95,6 @@ function getUnix (path, args, env) {
8495
})
8596
}
8697

87-
function freePort() {
88-
return new Promise((resolve) => {
89-
let server = net.createServer()
90-
server.listen(0, '127.0.0.1', () => {
91-
let port = server.address().port
92-
server.close()
93-
resolve(port)
94-
})
95-
})
96-
}
97-
9898
function socket (ty) {
9999
conn = tcp.next()
100100
failure = new Promise((resolve, reject) => {

0 commit comments

Comments
 (0)