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.
This commit is contained in:
m1ngsama 2025-12-01 14:00:00 +08:00
parent 6c9d243f9a
commit c0cb22a85f

View file

@ -23,6 +23,8 @@ typedef struct client {
char command_output[2048]; char command_output[2048];
pthread_t thread; pthread_t thread;
bool connected; bool connected;
int ref_count; /* Reference count for safe cleanup */
pthread_mutex_t ref_lock; /* Lock for ref_count */
} client_t; } client_t;
/* Initialize SSH server */ /* Initialize SSH server */