https://gitlab.synchro.net/main/sbbs/-/commit/dd03edda573f914bc975282e
Modified Files:
src/sbbs3/js_socket.cpp
Log Message:
js: route every FIONBIO ioctl through one helper
Five sites passed the address of private_t's BOOL nonblocking field to ioctlsocket() through a (ulong*) cast. That is correct only while the
field stays four bytes wide; the connect-thread copy of the same field
was converted to bool in 118984e9af (2024-01-19) and broke exactly this
way, fixed in 6a90215fb1 (2026-10-25).
Add set_socket_nonblocking(), which copies the flag into a local and
passes that, so the pointer type is compiler-checked and the field's
width no longer matters. The local is u_long on Windows and int
elsewhere, the width each platform's FIONBIO consumer actually reads.
The ulong locals used until now are 8 bytes on LP64 and only worked on little-endian targets.
Use the helper for all nine FIONBIO calls in the file, dropping three single-use locals. The TLS session setup also set TCP_NODELAY via a
ulong; use an int there, as elsewhere since 77d90bedea (2026-05-05).
Co-Authored-By: Claude Fable 5.1 <
noreply@anthropic.com>
--- SBBSecho 3.38-Linux
* Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)