Subj : src/ssh/TODO.md ssh-conn.c To : Git commit to main/sbbs/master From : Deucе Date : Mon Mar 30 2026 14:17:14 https://gitlab.synchro.net/main/sbbs/-/commit/a6fc65e8269ab5a07c35f3a9 Modified Files: src/ssh/TODO.md ssh-conn.c Log Message: Fix send_channel_request_wait race: CLOSE clobbering successful response When the server accepted a channel request (CHANNEL_SUCCESS) and then immediately closed the channel (CHANNEL_CLOSE), the client's demux thread could process both messages before the client thread woke up. The post-loop check `if (sess->terminate || ch->close_received)` then returned DSSH_ERROR_TERMINATED even though request_responded was true, discarding the successful response and causing dssh_chan_open to return NULL. Fix: capture `responded` under buf_mtx; only return TERMINATED when the loop exited without getting a response. If the server explicitly answered, honor that answer regardless of close_received. Observed as test_self_exec_exit_code failing under -j16, predominantly with RSA variants where keygen CPU contention widens the scheduling window between the two demux dispatches. Co-Authored-By: Claude Opus 4.6 (1M context) --- ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net .