bdy 1.21.1-stage → 1.21.2-dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/distTs/package.json
CHANGED
|
@@ -215,8 +215,17 @@ class ServerSsh extends events_1.default {
|
|
|
215
215
|
let channel;
|
|
216
216
|
let pty;
|
|
217
217
|
let x11;
|
|
218
|
-
|
|
218
|
+
let sessionClosed = false;
|
|
219
|
+
let clientCloseSession = null;
|
|
220
|
+
const closeSession = (exitCode) => {
|
|
221
|
+
if (sessionClosed)
|
|
222
|
+
return;
|
|
223
|
+
sessionClosed = true;
|
|
219
224
|
logger_1.default.debug('ssh close session');
|
|
225
|
+
if (exitCode !== undefined) {
|
|
226
|
+
session.exit(exitCode);
|
|
227
|
+
session.end();
|
|
228
|
+
}
|
|
220
229
|
env = null;
|
|
221
230
|
pty = null;
|
|
222
231
|
x11 = null;
|
|
@@ -229,11 +238,15 @@ class ServerSsh extends events_1.default {
|
|
|
229
238
|
channel.removeAllListeners();
|
|
230
239
|
channel = null;
|
|
231
240
|
}
|
|
232
|
-
|
|
241
|
+
if (clientCloseSession)
|
|
242
|
+
client.removeListener('close', clientCloseSession);
|
|
243
|
+
};
|
|
244
|
+
clientCloseSession = () => {
|
|
245
|
+
closeSession();
|
|
233
246
|
};
|
|
234
|
-
client.on('close',
|
|
235
|
-
session.on('close', closeSession);
|
|
236
|
-
session.on('end', closeSession);
|
|
247
|
+
client.on('close', clientCloseSession);
|
|
248
|
+
session.on('close', () => closeSession());
|
|
249
|
+
session.on('end', () => closeSession());
|
|
237
250
|
session.on('pty', (accept, reject, info) => {
|
|
238
251
|
logger_1.default.debug('ssh pty');
|
|
239
252
|
logger_1.default.debug(info);
|
|
@@ -374,7 +387,14 @@ class ServerSsh extends events_1.default {
|
|
|
374
387
|
session.on('sftp', (accept, reject) => {
|
|
375
388
|
logger_1.default.debug('sftp');
|
|
376
389
|
if (!sftp && accept) {
|
|
377
|
-
|
|
390
|
+
const sftpStream = accept();
|
|
391
|
+
sftp = new sftp_1.default(sftpStream);
|
|
392
|
+
sftpStream.on('error', () => {
|
|
393
|
+
closeSession(1);
|
|
394
|
+
});
|
|
395
|
+
sftpStream.on('close', () => {
|
|
396
|
+
closeSession(0);
|
|
397
|
+
});
|
|
378
398
|
}
|
|
379
399
|
else if (reject) {
|
|
380
400
|
reject();
|