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