https://gitlab.synchro.net/main/sbbs/-/work_items/1306#note_10752
The terminal server does send a disconnect for throttled and rejected connections. The connections it rejects up front (ip-silent.can, the max-concurrent-connections limit, a temporary login ban, ip.can/host.can) are closed *before* the client is registered, so they never publish a `client/action/connect` at all. The login-attempt throttle runs later, inside the node thread, which always ends in a hangup that publishes the disconnect. A test against Vertrauen confirmed this: two telnet connections (one dropped immediately, one held for a few seconds) each got a connect and a disconnect, and `client/list` returned to its previous contents.
There is a real bug that produces stale entries, though: a client that disconnects while Synchronet's link to the MQTT broker is down is never removed from the server's client list. Its entry then stays in the retained `client/list` (and the `client` "N total" count) indefinitely. This applies to builds that use libmosquitto with an external broker, since mosquitto reconnects automatically after a dropped link. A fix is being prepared that keeps the list current whether or not the broker is connected and republishes the list on reconnect.
To tell whether that's what you're seeing:
1. Does the retained `sbbs/<qwkid>/host/<host>/server/term/client` topic ("N total") also show the inflated count, or the real one?
2. Is your Node-RED display built from the retained `client/list` topic, or from the `client/action/connect` and `client/action/disconnect` events?
3. Internal broker, or an external one (e.g. mosquitto)?
If the display is built from the action events, note that those topics are published *retained* (so each re-subscribe replays the last connect and the last disconnect), and the disconnect payload carries the disconnect time, not the connect time. A flow that matches a disconnect to its connect by the whole line will never find a match. Match on the socket number (last field), or on address + port.
_Authored by Claude (Claude Code), on behalf of @rswindell_
--- SBBSecho 3.38-Linux
* Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)