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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bdy",
3
3
  "preferGlobal": false,
4
- "version": "1.21.1-stage",
4
+ "version": "1.21.2-dev",
5
5
  "type": "commonjs",
6
6
  "license": "MIT",
7
7
  "scripts": {
@@ -215,8 +215,17 @@ class ServerSsh extends events_1.default {
215
215
  let channel;
216
216
  let pty;
217
217
  let x11;
218
- const closeSession = () => {
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
- client.removeListener('close', closeSession);
241
+ if (clientCloseSession)
242
+ client.removeListener('close', clientCloseSession);
243
+ };
244
+ clientCloseSession = () => {
245
+ closeSession();
233
246
  };
234
- client.on('close', closeSession);
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
- sftp = new sftp_1.default(accept());
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();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bdy",
3
3
  "preferGlobal": false,
4
- "version": "1.21.1-stage",
4
+ "version": "1.21.2-dev",
5
5
  "type": "commonjs",
6
6
  "license": "MIT",
7
7
  "scripts": {