Subj : src/sbbs3/mqtt_broker.cpp mqtt_broker.h To : Git commit to main/sbbs/master From : Deucе Date : Sun May 10 2026 19:29:42 https://gitlab.synchro.net/main/sbbs/-/commit/7c52f1a90e33431d5824fc46 Modified Files: src/sbbs3/mqtt_broker.cpp mqtt_broker.h Log Message: mqtt_broker: fix session map key collision on socket descriptor reuse Sessions were keyed by "pending-{socket}" strings. When a client disconnected, the session stayed in the map with socket=-1. When the OS reused the socket descriptor for a new connection, the old dead session was silently overwritten, corrupting broker state and causing subsequent connections to fail. Fix: key sessions by SOCKET descriptor directly. Dead sessions are erased before creating new entries for the same descriptor. Cleanup (unsubscribe, will delivery) now happens before socket close to ensure the descriptor isn't reused while cleanup is in progress. Also: use INVALID_SOCKET consistently instead of -1 for invalid socket descriptors (portability). Co-Authored-By: Claude Opus 4.6 (1M context) --- ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net .