]> git.pond.sub.org Git - empserver/commitdiff
(player_new, player_accept, update_wait, market_update) [_WIN32]:
authorRon Koenderink <rkoenderink@yahoo.ca>
Mon, 26 Dec 2005 03:53:21 +0000 (03:53 +0000)
committerRon Koenderink <rkoenderink@yahoo.ca>
Mon, 26 Dec 2005 03:53:21 +0000 (03:53 +0000)
Move assignment of hostaddr and hostname from player_new() to
player_accept().  This solves the necessary of adding the socket include
file to prototypes.h for player_new().  The socket include file creates
a namespace conflict for WIN32.

include/prototypes.h
src/lib/player/accept.c
src/server/marketup.c
src/server/update.c

index d27ca584872c21a0e6d7f766d9f0aedece6d47b1..e6e098a4a9addb0f06900bee20c05bcd9efe642f 100644 (file)
@@ -411,7 +411,7 @@ extern void global_init(void);
  */
 /* accept.c */
 extern void player_init(void);
-extern struct player *player_new(int, struct sockaddr_in *);
+extern struct player *player_new(int);
 extern struct player *player_delete(struct player *);
 extern struct player *player_next(struct player *);
 extern struct player *player_prev(struct player *);
index a0e25db5fb8bb4fb80a962b148c1ee258dc14cbe..ef99f06df61c08d3ed45ad5ec39fc87ef9f4796c 100644 (file)
@@ -135,18 +135,15 @@ player_init(void)
 }
 
 struct player *
-player_new(int s, struct sockaddr_in *sin)
+player_new(int s)
 {
     struct player *lp;
-#ifdef RESOLVE_IPADDRESS
-    struct hostent *hostp;
-#endif
 
     lp = malloc(sizeof(struct player));
     if (!lp)
       return NULL;
     memset(lp, 0, sizeof(struct player));
-    if (sin) {
+    if (s >= 0) {
        /* real player, not dummy created by update and market update */
        lp->iop = io_open(s,
                          IO_READ | IO_WRITE | IO_NBLOCK,
@@ -156,13 +153,6 @@ player_new(int s, struct sockaddr_in *sin)
            return NULL;
        }
        emp_insque(&lp->queue, &Players);
-       strcpy(lp->hostaddr, inet_ntoa(sin->sin_addr));
-#ifdef RESOLVE_IPADDRESS
-       if (NULL !=
-           (hostp = gethostbyaddr(&sin->sin_addr, sizeof(sin->sin_addr),
-                                  AF_INET)))
-           strcpy(lp->hostname, hostp->h_name);
-#endif /* RESOLVE_IPADDRESS */
        lp->cnum = 255;
        lp->curid = -1;
        time(&lp->curup);
@@ -258,6 +248,9 @@ player_accept(void *unused)
     int set = 1;
     int stacksize;
     char buf[128];
+#ifdef RESOLVE_IPADDRESS
+    struct hostent *hostp;
+#endif
 
     while (1) {
        empth_select(s, EMPTH_FD_READ);
@@ -268,12 +261,19 @@ player_accept(void *unused)
            continue;
        }
        (void)setsockopt(ns, SOL_SOCKET, SO_KEEPALIVE, &set, sizeof(set));
-       np = player_new(ns, &sin);
+       np = player_new(ns);
        if (!np) {
            logerror("can't create player for fd %d", ns);
            close(ns);
            continue;
        }
+       strcpy(np->hostaddr, inet_ntoa(sin.sin_addr));
+#ifdef RESOLVE_IPADDRESS
+       if (NULL !=
+           (hostp = gethostbyaddr(&sin.sin_addr, sizeof(sin.sin_addr),
+                                  AF_INET)))
+           strcpy(np->hostname, hostp->h_name);
+#endif /* RESOLVE_IPADDRESS */
        /* XXX may not be big enough */
        stacksize = 100000
 /* budget */  + max(WORLD_X * WORLD_Y / 2 * sizeof(int) * 7,
index ec990e91d92ea78124c3537a0ae2e340967cd29a..6eb7c4dcb466ea8727a09cb1258e8b3e2a340a80 100644 (file)
@@ -72,7 +72,7 @@ market_update(void *unused)
     while (1) {
        time(&now);
 /*     logerror("Checking the world markets at %s", ctime(&now));*/
-       dp = player_new(0, 0);
+       dp = player_new(-1);
        if (dp) {
            empth_create(PP_UPDATE, check_all_markets, (50 * 1024), 0,
                         "MarketCheck", "Checks the world markets", dp);
index f4026bd449a0d1ef41460b0fcc38c46bfa35ebbb..04aa986b2ff33c95d50ac68878eb1c0ae8206fb9 100644 (file)
@@ -147,7 +147,7 @@ update_wait(void *unused)
         * we rely on the fact that update's priority is the highest
         * in the land so it can finish before it yields.
         */
-       dp = player_new(0, 0);
+       dp = player_new(-1);
        if (!dp) {
            logerror("can't create dummy player for update");
            update_pending = 0;