BBS: TELESC.NET.BR Assunto: src/sbbs3/main.cpp De: Rob Swindell (on Windows 11) Data: Sat, 2 May 2026 18:58:15 -0700 ----------------------------------------------------------- https://gitlab.synchro.net/main/sbbs/-/commit/8c6da8b2eee4363c1fcb9925 Modified Files: src/sbbs3/main.cpp Log Message: sbbs3 terminal server: include socket/protocol/IP in output_thread send-error logs Three coordinated changes to output_thread's SOCKET_ERROR handling: * Switch all six log lines from "..." (using sbbs->client_name like "Terminal Server" / "Node N") to the standard "%04d %s [%s] ..." prefix used by every other connection log line in the file. This groups send errors with the matching "Connection accepted", "!CLIENT BLOCKED", etc. lines for easy correlation. Capture client_socket.load() once into a local since the cascade reads it six times (it's std::atomic). * Populate the listener pseudo-sbbs's client.protocol and client_ipaddr per-connection. These were previously only set inside sbbs_t::init() for per-node sbbs's (main.cpp:3639), leaving the listener's output_thread with empty strings to print. * Demote ESHUTDOWN and EINVAL send errors to LOG_NOTICE alongside the existing ENOTSOCK / ECONNRESET / ECONNABORTED handlers. Both are the typical errors raised when the listener races with close_socket() on a blocked client (post-shutdown / mid-close socket state). Treating them as expected disconnect noise matches the existing pattern. Note: on POSIX, EINVAL from send() can theoretically indicate a programming bug rather than a socket-state race, but in practice it's the same race as on Windows and the noise reduction is worth the small risk of masking. Co-Authored-By: Claude Opus 4.7 (1M context) n --- mSynchronetn hgVertrauen n hHome of Synchronet n gh[vert/cvs/bbs].synchro.net ----------------------------------------------------------- [Voltar]