Forráskód Böngészése

[BT-6709][ssh_server]fix hard fault

balbekova 5 éve
szülő
commit
b8ec319b15
2 módosított fájl, 7 hozzáadás és 2 törlés
  1. 4 1
      modules/SSH_Server/server.c
  2. 3 1
      modules/parameters.c

+ 4 - 1
modules/SSH_Server/server.c

@@ -49,6 +49,8 @@
 #endif
 
 
+bool fl_reinit_ssh = false; //флаг разрешение переинициализации ssh сервера 
+
 static const char serverBanner[] = "BT-6709 command server\n";
 
 
@@ -145,7 +147,7 @@ static void *server_worker(void* vArgs)
         ret = wolfSSH_accept(threadCtx->ssh);
     else
         ret = NonBlockSSH_accept(threadCtx->ssh);
-
+    fl_reinit_ssh = true;
     cli_state_t *cli_state;
     if (!sSettings.sSSH.SSHEnable) {
         // kick the client out
@@ -354,6 +356,7 @@ static void ssh_server(void *arg)
     }
 
     while (sSettings.sSSH.SSHEnable) {
+        fl_reinit_ssh = false;
         word16 port = sSettings.sSSH.port;
         tcp_listen(&ssh_listen_fd, &port, 1, false, false);
 

+ 3 - 1
modules/parameters.c

@@ -2352,6 +2352,8 @@ void SetTelnetEnableStateStr(char *str)
 
 #if defined SSH_ENABLE
 #include "server.h"
+
+extern bool fl_reinit_ssh;
 // ************************************************************************** //
 //                             Параметры SSH
 /**
@@ -2375,7 +2377,7 @@ void SetSSHEnableStateStr(char *str)
     if (strncmp(str, "on", 2) == 0) {
         bool old_state = sSettings.sSSH.SSHEnable;
         sSettings.sSSH.SSHEnable = 1;
-        if (old_state != true) {
+        if (old_state != true && fl_reinit_ssh == true) {
             ssh_server_init();
         }
     } else {