BBS:      TELESC.NET.BR
Assunto:  src/ssh/TODO.md src/ssh/test/test_selftest.c
De:       Deuc¨
Data:     Mon, 30 Mar 2026 14:17:14 -0700
-----------------------------------------------------------
https://gitlab.synchro.net/main/sbbs/-/commit/753b6cf1ff5e8b5cbf210660
Modified Files:
	src/ssh/TODO.md src/ssh/test/test_selftest.c
Log Message:
Fix selftest echo write race: poll for DSSH_POLL_WRITE before first write

dssh_chan_write is non-blocking by design  returns 0 when remote_window
is 0.  Both sides open channels with initial_window=0 then independently
send WINDOW_ADJUST after setup.  Under -j16 contention (especially RSA
keygen), the server's WINDOW_ADJUST hadn't been processed by the client's
demux thread before the test wrote, causing ~40% failure rate in
dssh_self_rsa and dssh_self_mlkem_rsa variants.

Add dssh_chan_poll(DSSH_POLL_WRITE) before the first write in
test_self_exec_echo and test_self_shell_echo, matching the pattern
already used by test_self_shell_large_data.  Make server_echo_thread
(both instances) use a poll-then-retry write loop to avoid silently
dropping data on partial writes.

Also log item 106: intermittent dssh_self_dhgex failure observed once
under heavy -j16 contention, not yet reproduced.

Co-Authored-By: Claude Opus 4.6 (1M context) 
n
---
  mSynchronetn  hgVertrauen n hHome of Synchronet n gh[vert/cvs/bbs].synchro.net

-----------------------------------------------------------
[Voltar]