]> git.pond.sub.org Git - empserver/blobdiff - src/server/main.c
Fix server shutdown to let player output drain properly
[empserver] / src / server / main.c
index becfeb34ae1ae10d9e29177ac084ce1ed417a6f7..da02ccdf3edb609c38188b57df23ffab053a100a 100644 (file)
@@ -411,7 +411,7 @@ shutdwn(int sig)
 {
     struct player *p;
     time_t now;
-    int i, queues_drained;
+    int i;
 
     logerror("Shutdown commencing (cleaning up threads.)");
 
@@ -431,22 +431,13 @@ shutdwn(int sig)
 
     now = time(NULL);
     empth_yield();
-    for (i = 1; i <= 3; i++) {
-       queues_drained = 1;
-       for (p = player_next(NULL); p; p = player_next(p)) {
-           if (io_outputwaiting(p->iop))
-               queues_drained = 0;
-       }
-       if (queues_drained)
-           break;
-       logerror("Waiting for player output to drain\n");
+    for (i = 1; i <= 3 && player_next(NULL); i++) {
+       logerror("Waiting for player threads to terminate\n");
        empth_sleep(now + i);
     }
 
-    for (p = player_next(NULL); p; p = player_next(p)) {
-       if (io_outputwaiting(p->iop))
-           logerror("Output for player %d lost", p->cnum);
-    }
+    for (p = player_next(NULL); p; p = player_next(p))
+       logerror("Player %d lingers, output might be lost", p->cnum);
 
     if (sig)
        logerror("Server shutting down on signal %d", sig);