]> git.pond.sub.org Git - empserver/commitdiff
(may_play): New, factored out of play_cmd() and kill_cmd().
authorMarkus Armbruster <armbru@pond.sub.org>
Wed, 22 Feb 2006 19:50:01 +0000 (19:50 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Wed, 22 Feb 2006 19:50:01 +0000 (19:50 +0000)
(play_cmd, kill_cmd): Use it.
(player_main): Don't check authfil, caller takes care of that.

src/lib/player/login.c
src/lib/player/player.c

index e62c3e1938536535499b85de661778c381e220ad..11a8836e07d895478c513194d63792ea570ee32a 100644 (file)
@@ -257,6 +257,30 @@ options_cmd(void)
     return RET_OK;
 }
 
+static int
+may_play(void)
+{
+    struct natstr *np;
+
+    if (player->cnum == 255 || !player->authenticated) {
+       pr_id(player, C_CMDERR, "need country and password\n");
+       return 0;
+    }
+    if (match_user(banfil, player)) {
+       logerror("Attempted login by BANNED host %s", praddr(player));
+       pr_id(player, C_EXIT, "Your login has been banned from this game\n");
+       io_shutdown(player->iop, IO_READ);
+       return 0;
+    }
+    np = getnatp(player->cnum);
+    if (np->nat_stat == STAT_GOD && !match_user(authfil, player)) {
+       logerror("NON-AUTHed Login attempted by %s", praddr(player));
+       pr_id(player, C_EXIT, "You're not a deity!\n");
+       return 0;
+    }
+    return 1;
+}
+
 static int
 play_cmd(void)
 {
@@ -287,10 +311,8 @@ play_cmd(void)
        player->cnum = cnum;
        player->authenticated = 1;
     }
-    if (player->cnum == 255 || !player->authenticated) {
-       pr_id(player, C_CMDERR, "need country and password\n");
+    if (!may_play())
        return RET_FAIL;
-    }
     other = getplayer((natid)player->cnum);
     if (other) {
        natp = getnatp(player->cnum);
@@ -301,12 +323,6 @@ play_cmd(void)
        }
        return RET_FAIL;
     }
-    if (match_user(banfil, player)) {
-       logerror("Attempted login by BANNED host %s", praddr(player));
-       pr("Your login has been banned from this game\n");
-       io_shutdown(player->iop, IO_READ);
-       return RET_FAIL;
-    }
     logerror("%s logged in as country #%d", praddr(player), player->cnum);
     pr_id(player, C_INIT, "%d\n", CLIENTPROTO);
     player_main(player);
@@ -319,24 +335,9 @@ static int
 kill_cmd(void)
 {
     struct player *other;
-    struct natstr *np;
 
-    if (player->cnum == 255 || !player->authenticated) {
-       pr_id(player, C_CMDERR, "need country and password\n");
+    if (!may_play())
        return RET_FAIL;
-    }
-    if (match_user(banfil, player)) {
-       logerror("Attempted login by BANNED host %s", praddr(player));
-       pr_id(player, C_EXIT, "Your login has been banned from this game\n");
-       io_shutdown(player->iop, IO_READ);
-       return RET_FAIL;
-    }
-    np = getnatp(player->cnum);
-    if (np->nat_stat == STAT_GOD && !match_user(authfil, player)) {
-       logerror("NON-AUTHed Login attempted by %s", praddr(player));
-       pr_id(player, C_EXIT, "You're not a deity!\n");
-       return RET_FAIL;
-    }
     other = getplayer(player->cnum);
     if (!other) {
        pr_id(player, C_EXIT, "country not in use\n");
index a0621efb4da6d40352693e58902cfe72441a88a7..435e276bdade6771edb2efe28d3d29b2642ede36 100644 (file)
@@ -79,11 +79,6 @@ player_main(struct player *p)
     if (init_nats() < 0)
        return;
     natp = getnatp(player->cnum);
-    if (player->god && !match_user(authfil, player)) {
-       logerror("NON-AUTHed Login attempted by %s", praddr(player));
-       pr("You're not a deity!\n");
-       return;
-    }
     if (!gamehours(player->curup)) {
        pr("Empire hours restriction in force\n");
        if (natp->nat_stat != STAT_GOD)