Stop local echo when remote echo is on

This commit is contained in:
DehanLUO 2023-07-10 02:10:54 -04:00
parent 9a82c4c5c0
commit fa50c7d9fa

View File

@ -174,9 +174,9 @@ export class TelnetSession extends BaseSession {
].includes(option)) { ].includes(option)) {
this.emitTelnet(TelnetCommands.DO, option) this.emitTelnet(TelnetCommands.DO, option)
if (option === TelnetOptions.ECHO && this.streamProcessor.forceEcho) { if (option === TelnetOptions.ECHO && this.streamProcessor.forceEcho) {
this.telnetRemoteEcho = true; this.telnetRemoteEcho = true
this.streamProcessor.forceEcho = false; this.streamProcessor.forceEcho = false
this.requestOption(TelnetCommands.WONT, option); this.requestOption(TelnetCommands.WONT, option)
} }
} else { } else {
this.logger.debug('(!) Unhandled option') this.logger.debug('(!) Unhandled option')
@ -189,7 +189,7 @@ export class TelnetSession extends BaseSession {
this.emitSize() this.emitSize()
} else if (option === TelnetOptions.ECHO) { } else if (option === TelnetOptions.ECHO) {
if (this.telnetRemoteEcho) { if (this.telnetRemoteEcho) {
this.streamProcessor.forceEcho = false; this.streamProcessor.forceEcho = false
this.emitTelnet(TelnetCommands.WONT, option) this.emitTelnet(TelnetCommands.WONT, option)
} else { } else {
this.streamProcessor.forceEcho = true this.streamProcessor.forceEcho = true
@ -213,7 +213,7 @@ export class TelnetSession extends BaseSession {
} }
if (command === TelnetCommands.WONT) { if (command === TelnetCommands.WONT) {
if (option === TelnetOptions.ECHO) { if (option === TelnetOptions.ECHO) {
this.telnetRemoteEcho = false; this.telnetRemoteEcho = false
this.emitTelnet(TelnetCommands.DONT, option) this.emitTelnet(TelnetCommands.DONT, option)
} else { } else {
this.logger.debug('(!) Unhandled option') this.logger.debug('(!) Unhandled option')