https://gitlab.synchro.net/main/sbbs/-/commit/7839289dc562f7e958d6a132
Modified Files:
src/ssh/TODO.md ssh-conn.c ssh-trans.c src/ssh/test/CMakeLists.txt test_conn.c test_transport.c
Log Message:
Fix 3 bugs: recv rekey termination, bytebuf window drift, close item 81 (items 15, 74, 81)
Item 15: recv_packet_raw() terminated the session on DSSH_ERROR_REKEY_NEEDED, asymmetric with send_packet() which correctly exempts it. Fixed to match.
Item 74: demux_dispatch() ignored dssh_bytebuf_write() return value,
deducting full dlen from local_window even on partial writes. Window accounting drifted, eventually starving the channel. Also capped maybe_replenish_window() by free buffer space so WINDOW_ADJUST never
grants more than the buffers can absorb.
Item 81: Closed as not-a-bug. The single demux thread serializes packet processing; the accept queue only grows while the app controls drain rate
via dssh_session_accept().
Co-Authored-By: Claude Opus 4.6 (1M context) <
noreply@anthropic.com>
---
■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net