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:
parent
48e068778e
commit
a94e700b58
1 changed files with 8 additions and 2 deletions
10
rlgwebd
10
rlgwebd
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue