BBS:      TELESC.NET.BR
Assunto:  src/ssh/TODO.md deucessh-algorithms.h deucessh.h ssh-trans.c ssh-trans
De:       Deuc¨
Data:     Fri, 27 Mar 2026 14:34:15 -0700
-----------------------------------------------------------
https://gitlab.synchro.net/main/sbbs/-/commit/147332188dc74f55116a86d7
Modified Files:
	src/ssh/TODO.md deucessh-algorithms.h deucessh.h ssh-trans.c ssh-trans.h ssh.c src/ssh/test/CMakeLists.txt test_alloc.c test_selftest.c test_transport.c
Log Message:
Fix 5 data races: atomic rekey counters, atomic algo pointers, set_ctx gate (items 32, 53, 57, 60, 61)

Item 53: split bytes_since_rekey into tx/rx halves; make tx counters
atomic (atomic_uint_fast32_t / atomic_uint_fast64_t) so rekey_needed()
reads them lock-free from the recv thread without acquiring tx_mtx
(which send_packet holds across I/O).  rx counters remain non-atomic
under rx_mtx.

Item 57: make all 10 *_selected pointer fields _Atomic in
dssh_transport_state_s so algorithm query functions perform implicit
atomic loads, eliminating UB during rekey.

Item 60: dssh_key_algo_set_ctx() now refuses with DSSH_ERROR_TOOLATE
after first dssh_session_init() (same gconf.used gate as registration).

Items 61, 32: documented dssh_dh_gex_set_provider() and callback
setters as must-call-before-start with thrd_create happens-before
guarantee explanation.

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

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