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);
|
gamemux.emit('end', this.gname, this.pname);
|
||||||
delete sessions[tag];
|
delete sessions[tag];
|
||||||
tslog("Game %s ended.", tag);
|
tslog("Game %s ended.", tag);
|
||||||
|
/* Was that the last game? */
|
||||||
|
if (!allowlogin && Object.keys(sessions).length == 0) {
|
||||||
|
shutdown();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function DglSession(filename) {
|
function DglSession(filename) {
|
||||||
|
|
@ -1168,13 +1172,15 @@ function consoleHandler(chunk) {
|
||||||
sessions[tag].close();
|
sessions[tag].close();
|
||||||
}
|
}
|
||||||
progressWatcher.stdin.end("\n");
|
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 () {
|
process.on("exit", function () {
|
||||||
for (var tag in sessions) {
|
for (var tag in sessions) {
|
||||||
sessions[tag].term.kill('SIGHUP');
|
sessions[tag].term.kill('SIGTERM');
|
||||||
}
|
}
|
||||||
tslog("Quitting...");
|
tslog("Quitting...");
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue