From c0cb22a85f488b772ac78008b5414b3edb4d4eea Mon Sep 17 00:00:00 2001 From: m1ngsama Date: Mon, 1 Dec 2025 14:00:00 +0800 Subject: [PATCH] Add SSH read timeout and PTY handling improvements Fixes thread accumulation and blocking issues: 1. SSH read timeouts - Use ssh_channel_read_timeout() with 30s timeout - Handle SSH_AGAIN, SSH_ERROR return codes properly - 60s timeout for username input - Prevents threads blocking forever on dead connections 2. Improved PTY request handling - Exit loop after PTY + SHELL received - Don't loop on WINDOW_CHANGE during init - Clear termination conditions 3. Better UTF-8 validation - Check multi-byte read completeness - Skip incomplete sequences gracefully Prevents "zombie threads" and eliminates need to restart after extended operation. --- include/ssh_server.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/ssh_server.h b/include/ssh_server.h index ed5092c..0f8419e 100644 --- a/include/ssh_server.h +++ b/include/ssh_server.h @@ -23,6 +23,8 @@ typedef struct client { char command_output[2048]; pthread_t thread; bool connected; + int ref_count; /* Reference count for safe cleanup */ + pthread_mutex_t ref_lock; /* Lock for ref_count */ } client_t; /* Initialize SSH server */