Skip to content
  • Rob Swindell's avatar
    Check for shutdown and recycle semaphores even while clients are connected · 75c5c9e5
    Rob Swindell authored
    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.
    75c5c9e5