diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/publicServer.c | 1 | ||||
| -rw-r--r-- | src/server.c | 96 | ||||
| -rw-r--r-- | src/tux.c | 5 |
3 files changed, 53 insertions, 49 deletions
diff --git a/src/publicServer.c b/src/publicServer.c index 7e1d56e..0ba1fc6 100644 --- a/src/publicServer.c +++ b/src/publicServer.c @@ -116,7 +116,6 @@ void eventPublicServer() { return; } - /* printf("interval = %d\n", interval); */ diff --git a/src/server.c b/src/server.c index d55a6c0..f824c33 100644 --- a/src/server.c +++ b/src/server.c @@ -618,23 +618,20 @@ void selectServerUdpSocket() tv.tv_sec = 0; tv.tv_usec = 5000; #endif - + FD_ZERO(&readfds); FD_SET(sock_server_udp->sock, &readfds); max_fd = sock_server_udp->sock; - + delZombieCLient(); - + ret = select(max_fd+1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &tv); - + if( ret < 0 ) { return; } - -/* - printf("%d\n", tv.tv_usec); -*/ + if( FD_ISSET(sock_server_udp->sock, &readfds) ) { eventClientUdpSelect(sock_server_udp); @@ -675,48 +672,53 @@ void selectServerSdlUdpSocket() delZombieCLient(); - sock_client = newSdlSockUdp(); - isCreateNewClient = FALSE; - - memset(buffer, 0, STR_SIZE); - ret = readSdlUdpSocket(sock_server_sdl_udp, sock_client, buffer, STR_SIZE-1); - - if( ret < 0 ) - { - return; - } - - client = findSdlUdpClient(sock_client); - - if( client == NULL ) - { - eventCreateNewSdlUdpClient(sock_client); + do{ + sock_client = newSdlSockUdp(); + isCreateNewClient = FALSE; + + memset(buffer, 0, STR_SIZE); + + ret = readSdlUdpSocket(sock_server_sdl_udp, sock_client, buffer, STR_SIZE-1); + + if( ret < 0 ) + { + destroySockSdlUdp(sock_client); + break; + } + client = findSdlUdpClient(sock_client); - isCreateNewClient = TRUE; - } - - if( client == NULL ) - { - fprintf(stderr, "Client total not found !\n"); - return; - } - if( isCreateNewClient == FALSE ) - { - destroySockSdlUdp(sock_client); - } - - if( ret <= 0 ) - { - client->status = NET_STATUS_ZOMBIE; - return; - } + if( client == NULL ) + { + eventCreateNewSdlUdpClient(sock_client); + client = findSdlUdpClient(sock_client); + isCreateNewClient = TRUE; + } + + if( client == NULL ) + { + fprintf(stderr, "Client total not found !\n"); + return; + } + + if( isCreateNewClient == FALSE ) + { + destroySockSdlUdp(sock_client); + } + + if( ret <= 0 ) + { + client->status = NET_STATUS_ZOMBIE; + return; + } + + if( addBuffer(client->buffer, buffer, ret) != 0 ) + { + client->status = NET_STATUS_ZOMBIE; + return; + } - if( addBuffer(client->buffer, buffer, ret) != 0 ) - { - client->status = NET_STATUS_ZOMBIE; - return; - } + }while( ret > 0 ); } #endif @@ -395,7 +395,10 @@ void eventTuxIsDead(tux_t *tux) static void eventTuxIsDeadWIthShot(tux_t *tux, shot_t *shot) { - shot->author->score++; + if( shot->author != NULL && shot->author != tux ) + { + shot->author->score++; + } if( getNetTypeGame() == NET_GAME_TYPE_SERVER ) { |