Fix telnet logoff crash

This commit is contained in:
fvanroie 2021-05-23 14:04:23 +02:00
parent 7d6029ebe6
commit 6835eda5b2

View File

@ -34,7 +34,7 @@ extern hasp_http_config_t http_config;
#endif #endif
// Create a new Stream that buffers all writes to telnetClient // Create a new Stream that buffers all writes to telnetClient
WriteBufferingStream bufferedtelnetBufferedClientClient{telnetClient, HASP_CONSOLE_BUFFER}; WriteBufferingClient bufferedTelnetClient{telnetClient, HASP_CONSOLE_BUFFER};
uint8_t telnetLoginState = TELNET_UNAUTHENTICATED; uint8_t telnetLoginState = TELNET_UNAUTHENTICATED;
uint16_t telnetPort = 23; uint16_t telnetPort = 23;
@ -44,8 +44,8 @@ ConsoleInput* telnetConsole;
void telnet_update_prompt() void telnet_update_prompt()
{ {
bufferedtelnetBufferedClientClient.print("hasp > "); if(telnetConsole) telnetConsole->update();
bufferedtelnetBufferedClientClient.flush(); bufferedTelnetClient.flush();
} }
void telnetClientDisconnect() void telnetClientDisconnect()
@ -62,13 +62,13 @@ void telnetClientDisconnect()
void telnetClientLogon() void telnetClientLogon()
{ {
telnetClient.println(); telnetClient.println();
debugPrintHaspHeader(&bufferedtelnetBufferedClientClient); debugPrintHaspHeader(&bufferedTelnetClient);
telnetLoginState = TELNET_AUTHENTICATED; // User and Pass are correct telnetLoginState = TELNET_AUTHENTICATED; // User and Pass are correct
telnetLoginAttempt = 0; // Reset attempt counter telnetLoginAttempt = 0; // Reset attempt counter
/* Now register logger for telnet */ /* Now register logger for telnet */
Log.registerOutput(1, &bufferedtelnetBufferedClientClient, LOG_LEVEL_VERBOSE, true); Log.registerOutput(1, &bufferedTelnetClient, LOG_LEVEL_VERBOSE, true);
telnetClient.flush(); bufferedTelnetClient.flush();
// telnetClient.setTimeout(10); // telnetClient.setTimeout(10);
LOG_TRACE(TAG_TELN, F(D_TELNET_CLIENT_LOGIN_FROM), telnetClient.remoteIP().toString().c_str()); LOG_TRACE(TAG_TELN, F(D_TELNET_CLIENT_LOGIN_FROM), telnetClient.remoteIP().toString().c_str());
@ -310,10 +310,11 @@ IRAM_ATTR void telnetLoop()
/* Active Client: Process user input */ /* Active Client: Process user input */
if(telnetClient.connected()) { if(telnetClient.connected()) {
if(telnetConsole) { if(telnetConsole) {
while(int16_t keypress = telnetConsole->readKey()) { while(telnetConsole->readKey()) {
if(!telnetConsole) return; // the console was destroyed by quit/exit
}; };
} else { } else {
telnetConsole = new ConsoleInput(&bufferedtelnetBufferedClientClient, HASP_CONSOLE_BUFFER); telnetConsole = new ConsoleInput(&bufferedTelnetClient, HASP_CONSOLE_BUFFER);
if(telnetConsole) { if(telnetConsole) {
telnetConsole->setLineCallback(telnetProcessLine); telnetConsole->setLineCallback(telnetProcessLine);
} else { } else {