X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fnetserv.c;h=b895a30318a93172e3d0284e7d27a4bf492e7702;hb=c91aa2b237bef6003ead8dfc98cdcab89f97c654;hp=991fbba61ae2b94e999f4926c69958eeefc56342;hpb=ee749a764df3dfa944c1f9de740ccbeb1cfdef40;p=rocksndiamonds.git diff --git a/src/netserv.c b/src/netserv.c index 991fbba6..b895a303 100644 --- a/src/netserv.c +++ b/src/netserv.c @@ -1,7 +1,7 @@ /*********************************************************** * Rocks'n'Diamonds -- McDuffin Strikes Back! * *----------------------------------------------------------* -* (c) 1995-2002 Artsoft Entertainment * +* (c) 1995-2006 Artsoft Entertainment * * Holger Schemel * * Detmolder Strasse 189 * * 33604 Bielefeld * @@ -77,7 +77,7 @@ static unsigned char realbuffer[512], *buffer = realbuffer + 4; static int interrupt; -static unsigned long ServerFrameCounter = 0; +static unsigned int ServerFrameCounter = 0; static void addtobuffer(struct NetworkServerPlayerInfo *player, unsigned char *b, int len) @@ -97,7 +97,8 @@ static void flushuser(struct NetworkServerPlayerInfo *player) #if defined(TARGET_SDL) SDLNet_TCP_Send(player->fd, player->writbuffer, player->nwrite); #else - write(player->fd, player->writbuffer, player->nwrite); + if (write(player->fd, player->writbuffer, player->nwrite) == -1) + Error(ERR_WARN, "write() failed; %s", strerror(errno)); #endif player->nwrite = 0; } @@ -293,11 +294,11 @@ static void Handle_OP_NUMBER_WANTED(struct NetworkServerPlayerInfo *player) Error(ERR_NETWORK_SERVER, "client %d (%s) switches to # %d", player->number, player->player_name, nr_wanted); else if (player->number == nr_wanted) - Error(ERR_NETWORK_SERVER, "client %d (%s) still has # %d", + Error(ERR_NETWORK_SERVER, "client %d (%s) already has # %d", player->number, player->player_name, nr_wanted); else Error(ERR_NETWORK_SERVER, - "client %d (%s) cannot switch (client %d still exists)", + "client %d (%s) cannot switch (client %d already exists)", player->number, player->player_name, nr_wanted); } @@ -375,11 +376,11 @@ static void Handle_OP_START_PLAYING(struct NetworkServerPlayerInfo *player) if (options.verbose) Error(ERR_NETWORK_SERVER, - "client %d (%s) starts game [level %d from levedir %d (%s)]", + "client %d (%s) starts game [level %d from leveldir %d (%s)]", player->number, player->player_name, (buffer[2] << 8) + buffer[3], (buffer[4] << 8) + buffer[5], - &buffer[6]); + &buffer[10]); for (w = first_player; w; w = w->next) if (w->introduced) @@ -388,6 +389,8 @@ static void Handle_OP_START_PLAYING(struct NetworkServerPlayerInfo *player) /* reset frame counter */ ServerFrameCounter = 0; + Error(ERR_NETWORK_SERVER, "resetting ServerFrameCounter to 0"); + /* reset player actions */ for (v = first_player; v; v = v->next) { @@ -416,10 +419,12 @@ static void Handle_OP_CONTINUE_PLAYING(struct NetworkServerPlayerInfo *player) static void Handle_OP_STOP_PLAYING(struct NetworkServerPlayerInfo *player) { + int cause_for_stopping = buffer[2]; + if (options.verbose) - Error(ERR_NETWORK_SERVER, "client %d (%s) stops game", - player->number, player->player_name); - broadcast(NULL, 2, 0); + Error(ERR_NETWORK_SERVER, "client %d (%s) stops game [%d]", + player->number, player->player_name, cause_for_stopping); + broadcast(NULL, 3, 0); } static void Handle_OP_MOVE_PLAYER(struct NetworkServerPlayerInfo *player) @@ -467,6 +472,11 @@ static void Handle_OP_MOVE_PLAYER(struct NetworkServerPlayerInfo *player) broadcast(NULL, 6 + last_client_nr, 0); +#if 0 + Error(ERR_NETWORK_SERVER, "sending ServerFrameCounter value %d", + ServerFrameCounter); +#endif + ServerFrameCounter++; } @@ -577,7 +587,8 @@ void NetworkServer(int port, int serveronly) setsid(); if (fork()) exit(0); - chdir("/"); + if (chdir("/") == -1) + Error(ERR_WARN, "chdir() failed; %s", strerror(errno)); /* open a fake stdin, stdout, stderr, just in case */ open("/dev/null", O_RDONLY); @@ -653,7 +664,8 @@ void NetworkServer(int port, int serveronly) if (FD_ISSET(lfd, &fds)) { - int newfd, slen; + int newfd; + socklen_t slen; slen = sizeof(saddr); newfd = accept(lfd, (struct sockaddr *)&saddr, &slen); @@ -731,7 +743,7 @@ void NetworkServer(int port, int serveronly) break; } - switch(buffer[1]) + switch (buffer[1]) { case OP_PLAYER_NAME: Handle_OP_PLAYER_NAME(player, len);