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]