summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/publicServer.c1
-rw-r--r--src/server.c96
-rw-r--r--src/tux.c5
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
diff --git a/src/tux.c b/src/tux.c
index 0243ee3..c8b80cc 100644
--- a/src/tux.c
+++ b/src/tux.c
@@ -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 )
{