Mercurial > hg > rlgwebd
changeset 198:ea28353d620a
Make sure games have saved and exited before stopping the server.
This should make the systemd version safe for production, though
it can't yet deal with a game that hangs and doesn't exit.
author | John "Elwin" Edwards |
---|---|
date | Thu, 28 Jan 2016 21:17:06 -0500 |
parents | 5041ec1fb426 |
children | 34e1bc4fd6b2 |
files | rlgwebd |
diffstat | 1 files changed, 8 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/rlgwebd Thu Jan 14 21:31:23 2016 -0500 +++ b/rlgwebd Thu Jan 28 21:17:06 2016 -0500 @@ -279,6 +279,10 @@ gamemux.emit('end', this.gname, this.pname); delete sessions[tag]; tslog("Game %s ended.", tag); + /* Was that the last game? */ + if (!allowlogin && Object.keys(sessions).length == 0) { + shutdown(); + } }; function DglSession(filename) { @@ -1168,13 +1172,15 @@ sessions[tag].close(); } progressWatcher.stdin.end("\n"); - setTimeout(shutdown, 2000); + if (Object.keys(sessions).length == 0) + setTimeout(shutdown, 500); + /* Otherwise wait for the games to end */ } } process.on("exit", function () { for (var tag in sessions) { - sessions[tag].term.kill('SIGHUP'); + sessions[tag].term.kill('SIGTERM'); } tslog("Quitting..."); return;