• src/sbbs3/ftpsrvr.cpp mailsrvr.cpp main.cpp services.cpp websrvr.cpp

    From Deuc¨@VERT to Git commit to main/sbbs/master on Wednesday, March 11, 2026 00:53:17
    https://gitlab.synchro.net/main/sbbs/-/commit/61695ba1a683ef1a7a50223c
    Modified Files:
    src/sbbs3/ftpsrvr.cpp mailsrvr.cpp main.cpp services.cpp websrvr.cpp Log Message:
    Ensure absolutely nothing executes after thread_down()

    Round 1 (2fb010d6c3) moved heavy shared-resource ops before thread_down
    but left lprintf calls after it. Every lprintf goes through lputs which
    calls mqtt_lputs(&mqtt, ...) Ä and cleanup destroys mqtt via
    mqtt_shutdown(). In services.cpp, the post-thread_down lprintf calls active_clients() which iterates the service[] array reading
    protected_uint32 values (CRITICAL_SECTIONs on Windows) that cleanup
    destroys at line 1807. Since all server DLLs share the CRT heap,
    corruption from any server is detected when another server calls free().

    Move all remaining lprintf calls before thread_down. For log messages
    that reported the thread_down() return value as "threads remain", use protected_uint32_value(thread_count) - 1 as an approximation instead.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Saturday, May 02, 2026 20:14:22
    https://gitlab.synchro.net/main/sbbs/-/commit/74d228e477cbdd68551d2a4d
    Modified Files:
    src/sbbs3/ftpsrvr.cpp mailsrvr.cpp main.cpp services.cpp websrvr.cpp Log Message:
    sbbs3 servers: demote zero-removal clear log to LOG_DEBUG

    The five servers share a single login_attempt_list. When a generic
    ctrl/clear semfile is touched (or a host-level MQTT clear topic
    fires), every server independently fans out and tries to clear the
    same shared list. The first to grab the list lock removes the
    matching entries; the others find them already gone and would log
    "Cleared 0 login attempt(s) for IP X" at LOG_INFO -- four redundant
    info-level lines per signal.

    Drop those zero-count messages to LOG_DEBUG so a real clear stays
    visible at INFO while the runner-up servers stay quiet at default
    log levels. The list-lock already serializes the mutations, so
    correctness is unchanged -- this is purely log-noise reduction.

    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net