]> git.pond.sub.org Git - empserver/blobdiff - src/lib/player/login.c
Clean up how quit and server shutdown trigger connection close
[empserver] / src / lib / player / login.c
index d6a2b5424c99dc9e360499ac883aaa90f18f2b21..fc002149dfbecface3bf4e023222a71e31c4553f 100644 (file)
@@ -86,7 +86,7 @@ player_login(void *ud)
 
     pr_id(player, C_INIT, "Empire server ready\n");
 
-    while (player->state != PS_SHUTDOWN) {
+    for (;;) {
        io_output(player->iop, 1);
        if (io_gets(player->iop, buf, sizeof(buf)) < 0) {
            res = io_input(player->iop, 1);
@@ -355,9 +355,11 @@ play_cmd(void)
     empth_set_name(empth_self(), buf);
     logerror("%s logged in as country #%d", praddr(player), player->cnum);
     pr_id(player, C_INIT, "%d\n", CLIENTPROTO);
+    player->state = PS_PLAYING;
     player_main(player);
     logerror("%s logged out, country #%d", praddr(player), player->cnum);
-    player->state = PS_SHUTDOWN;
+    if (CANT_HAPPEN(!io_eof(player->iop)))
+       io_set_eof(player->iop);
     return RET_OK;
 }