瀏覽代碼

server.c: beauty

Sergey Alirzaev 5 年之前
父節點
當前提交
a180a2aed0
共有 1 個文件被更改,包括 8 次插入4 次删除
  1. 8 4
      modules/SSH_Server/server.c

+ 8 - 4
modules/SSH_Server/server.c

@@ -148,6 +148,7 @@ static void *server_worker(void* vArgs)
         // kick the client out
     } else if (ret == WS_SUCCESS) {
         if ((cli_state = alloc_state())) {
+            // create the new CLI contex
             cli_state->num_connect = threadCtx->ssh;
             cli_state->input_state = CLI_CMD;
             cli_state->send = cli_send;
@@ -298,7 +299,7 @@ static void ssh_server(void *arg)
     #endif
     wolfSSH_Init();
     WOLFSSH_CTX* ctx = NULL;
-    SOCKET_T listenFd = 0;
+    static SOCKET_T ssh_listen_fd = 0;
     word32 defaultHighwater = EXAMPLE_HIGHWATER_MARK;
     word32 threadCount = 0;
     const char multipleConnections = 0;
@@ -337,7 +338,7 @@ static void ssh_server(void *arg)
 
     while (sSettings.sSSH.SSHEnable) {
         word16 port = sSettings.sSSH.port;
-        tcp_listen(&listenFd, &port, 1, false, false);
+        tcp_listen(&ssh_listen_fd, &port, 1, false, false);
 
         do {
             SOCKET_T      clientFd = 0;
@@ -366,7 +367,7 @@ static void ssh_server(void *arg)
                 wolfSSH_SetHighwater(ssh, defaultHighwater);
             }
 
-            clientFd = accept(listenFd, (struct sockaddr*)&clientAddr,
+            clientFd = accept(ssh_listen_fd, (struct sockaddr*)&clientAddr,
                                                                      &clientAddrSz);
             if (clientFd == -1)
                 err_sys("tcp accept failed");
@@ -392,7 +393,10 @@ static void ssh_server(void *arg)
             server_worker(threadCtx);
 #endif /* SINGLE_THREADED */
         } while (multipleConnections);
-        WCLOSESOCKET(listenFd);
+        if (ssh_listen_fd) {
+            WCLOSESOCKET(ssh_listen_fd);
+            ssh_listen_fd = 0;
+        }
     }
 
     wolfSSH_CTX_free(ctx);