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 "<node-name> ..." (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) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net