From 437da38a26548714e6e1640722148f0f9f601ccb Mon Sep 17 00:00:00 2001 From: oroborus Date: Mon, 17 Mar 2008 20:29:34 +0000 Subject: - opravena chyba, clent nacital iba _jeden_ sietovy packet za 50 ms ( ano aj ked ich prislo viacej) - server pinguje clientov a na zaklade toho client vie, ci server nespadol - publicserver sa da korektne vypnut signalom SIGQUIT - publicserver bol pretiahnuty cez valgrind, teraz za pocet volani funkcie malloc rovna poctu volani funkcie free - v sietovom multiplayeri sa da chodit cez teleporty a strielat do teleportov - do rur sa da siez strielat git-svn-id: http://opensvn.csie.org/tuxanci_ng@24 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e --- src/server.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'src/server.c') diff --git a/src/server.c b/src/server.c index 032a210..2a259c5 100644 --- a/src/server.c +++ b/src/server.c @@ -3,6 +3,12 @@ #include #include +#include +#include +#include +#include +#include + #include "list.h" #include "tux.h" #include "network.h" @@ -44,7 +50,7 @@ static my_time_t lastSyncClient; void static initServer() { listClient = newList(); - lastSyncClient = getMyTime(); + lastSyncClient = getMyTime(); } #ifdef SUPPORT_NET_UNIX_TCP @@ -495,6 +501,8 @@ void eventPeriodicSyncClient() client_t *thisClientSend; tux_t *thisTux; int i, j; + + proto_send_ping_server(); #ifndef BUBLIC_SERVER proto_send_newtux_server(NULL, @@ -557,6 +565,7 @@ static void eventClientUdpSelect(sock_udp_t *sock_server) isCreateNewClient = FALSE; memset(buffer, 0, STR_SIZE); + ret = readUdpSocket(sock_server, sock_client, buffer, STR_SIZE-1); client = findUdpClient(sock_client); @@ -597,6 +606,7 @@ void selectServerUdpSocket() struct timeval tv; fd_set readfds; int max_fd; + int ret; #ifndef BUBLIC_SERVER tv.tv_sec = 0; @@ -614,7 +624,12 @@ void selectServerUdpSocket() delZombieCLient(); - select(max_fd+1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &tv); + ret = select(max_fd+1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &tv); + + if( ret < 0 ) + { + return; + } /* printf("%d\n", tv.tv_usec); -- cgit v1.2.3