https://gitlab.synchro.net/main/sbbs/-/commit/8533cb551b49b8a61d338cf0
Modified Files:
src/ssh/TODO.md ssh-conn.c src/ssh/test/dssh_test_internal.h test_conn.c
Log Message:
Fix 3 window-accounting data races (items 51, 63, 84)
local_window was modified without buf_mtx and before send_packet
succeeded, causing flow-control drift and permanent channel stalls. session_write/write_ext used a stale remote_window snapshot from a
separate lock acquisition, causing spurious DSSH_ERROR_TOOLONG.
- send_window_adjust: update local_window under buf_mtx, only after
send_packet succeeds
- send_data/send_extended_data: add size_t *sentp parameter for
clamp-under-lock mode (NULL = exact-or-fail)
- session_write/write_ext: pass bufsz directly, let inner function
clamp atomically (eliminates double-lock gap)
- channel_write: remove racy unlocked pre-check of remote_window
Co-Authored-By: Claude Opus 4.6 (1M context) <
noreply@anthropic.com>
---
■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net