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.
This commit is contained in:
John "Elwin" Edwards 2016-01-28 21:17:06 -05:00
parent 48e068778e
commit a94e700b58

10
rlgwebd
View file

@ -279,6 +279,10 @@ TermSession.prototype.destroy = function () {
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 @@ function consoleHandler(chunk) {
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;