• src/sbbs3/ctrl/MainFormUnit.cpp src/sbbs3/ftpsrvr.c mailsrvr.c main.cp

    From Rob Swindell (on Debian Linux)@1:103/705 to Git commit to main/sbbs/master on Fri Jan 12 17:06:02 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/63d0772d84678f216d83e3ab
    Modified Files:
    src/sbbs3/ctrl/MainFormUnit.cpp src/sbbs3/ftpsrvr.c mailsrvr.c main.cpp mqtt.c server.h services.c startup.h websrvr.c
    Log Message:
    Check for shutdown and recycle semaphores even while clients are connected

    We have checks/loops/timeouts waiting for active clients to disconnect and child thread threads to terminate whenever shutting down or recycling already, so this should be safe. This pretty simple change fixes issue #236 (can't terminate server under heavy load).

    Also as part of this commit, introduced the ability to "pause" a server (prevent it from accepting new connections) with the ctrl/pause semaphore
    file or via the MQTT server/pause (and resume) topics. This feature is useful when debugging server issues where you don't necessarily want to fully shutdown/terminate the server, but don't want any new connections to be accepted (the listen backlog will fill up with incoming connections though). Unlike a server shutdown, a server pause can be "undone" via MQTT (by publishing a message to the "resume" topic).

    The "pause" semaphore file is just an "existence" semaphore file - its date/time stamp doesn't matter. If the file exists, the server will enter
    a paused state (and periodically log messages to that fact) until the semfile is deleted.

    This server pause feature is not the same as the pause button function in sbbsctrl, which just pauses server log output.
    --- SBBSecho 3.20-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)