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;