From a8c71342180abbc9ace585e21d86b4770fb56a1c Mon Sep 17 00:00:00 2001 From: Eugene Pankov Date: Sat, 13 Feb 2021 12:42:15 +0100 Subject: [PATCH] fixed SSH reconnection behaviour - fixed #3446, fixed #3442 --- .../src/components/serialTab.component.pug | 6 +++--- .../src/components/serialTab.component.ts | 12 +++++++----- terminus-ssh/src/components/sshTab.component.pug | 14 +++++++------- terminus-ssh/src/components/sshTab.component.ts | 10 ++++++---- 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/terminus-serial/src/components/serialTab.component.pug b/terminus-serial/src/components/serialTab.component.pug index a2339ffd..9087c040 100644 --- a/terminus-serial/src/components/serialTab.component.pug +++ b/terminus-serial/src/components/serialTab.component.pug @@ -1,10 +1,10 @@ -.tab-toolbar +.tab-toolbar([class.show]='!session || !session.open') .btn.btn-outline-secondary.reveal-button i.fas.fa-ellipsis-h - .toolbar([class.show]='!session || !session.open') + .toolbar i.fas.fa-circle.text-success.mr-2(*ngIf='session && session.open') i.fas.fa-circle.text-danger.mr-2(*ngIf='!session || !session.open') - strong(*ngIf='session') {{session.connection.port}} ({{session.connection.baudrate}}) + strong {{connection.port}} ({{connection.baudrate}}) .mr-auto diff --git a/terminus-serial/src/components/serialTab.component.ts b/terminus-serial/src/components/serialTab.component.ts index 9e2b14dd..fd1513c1 100644 --- a/terminus-serial/src/components/serialTab.component.ts +++ b/terminus-serial/src/components/serialTab.component.ts @@ -97,11 +97,13 @@ export class SerialTabComponent extends BaseTerminalTabComponent { })) this.attachSessionHandler(this.session!.destroyed$.subscribe(() => { this.write('Press any key to reconnect\r\n') - this.input$.pipe(first()).subscribe(() => { - if (!this.session?.open) { - this.reconnect() - } - }) + setTimeout(() => { + this.input$.pipe(first()).subscribe(() => { + if (!this.session?.open) { + this.reconnect() + } + }) + }, 100) })) super.attachSessionHandlers() } diff --git a/terminus-ssh/src/components/sshTab.component.pug b/terminus-ssh/src/components/sshTab.component.pug index 8382e62d..f18f50d1 100644 --- a/terminus-ssh/src/components/sshTab.component.pug +++ b/terminus-ssh/src/components/sshTab.component.pug @@ -1,14 +1,14 @@ -.tab-toolbar +.tab-toolbar([class.show]='!session || !session.open') .btn.btn-outline-secondary.reveal-button i.fas.fa-ellipsis-h - .toolbar(*ngIf='session', [class.show]='!session.open') - i.fas.fa-circle.text-success.mr-2(*ngIf='session.open') - i.fas.fa-circle.text-danger.mr-2(*ngIf='!session.open') - strong.mr-auto(*ngIf='session') {{session.connection.user}}@{{session.connection.host}}:{{session.connection.port}} + .toolbar + i.fas.fa-circle.text-success.mr-2(*ngIf='session && session.open') + i.fas.fa-circle.text-danger.mr-2(*ngIf='!session || !session.open') + strong.mr-auto {{connection.user}}@{{connection.host}}:{{connection.port}} - button.btn.btn-secondary.mr-2((click)='reconnect()', [class.btn-info]='!session.open') + button.btn.btn-secondary.mr-2((click)='reconnect()', [class.btn-info]='!session || !session.open') span Reconnect - button.btn.btn-secondary((click)='showPortForwarding()', *ngIf='session.open') + button.btn.btn-secondary((click)='showPortForwarding()', *ngIf='session && session.open') i.fas.fa-plug span Ports diff --git a/terminus-ssh/src/components/sshTab.component.ts b/terminus-ssh/src/components/sshTab.component.ts index 82d82b57..a0f17f88 100644 --- a/terminus-ssh/src/components/sshTab.component.ts +++ b/terminus-ssh/src/components/sshTab.component.ts @@ -143,7 +143,6 @@ export class SSHTabComponent extends BaseTerminalTabComponent { protected attachSessionHandlers (): void { const session = this.session! - super.attachSessionHandlers() this.attachSessionHandler(session.destroyed$.subscribe(() => { if ( // Ctrl-D @@ -158,12 +157,15 @@ export class SSHTabComponent extends BaseTerminalTabComponent { if (!this.reconnectOffered) { this.reconnectOffered = true this.write('Press any key to reconnect\r\n') - this.attachSessionHandler(this.input$.pipe(first()).subscribe(() => { - this.reconnect() - })) + setTimeout(() => { + this.attachSessionHandler(this.input$.pipe(first()).subscribe(() => { + this.reconnect() + })) + }, 100) } } })) + super.attachSessionHandlers() } async initializeSession (): Promise {