summaryrefslogtreecommitdiff
path: root/src/server.c
diff options
context:
space:
mode:
authororoborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e>2008-03-18 15:59:56 +0000
committeroroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e>2008-03-18 15:59:56 +0000
commit11239bc45b51f9cc9eaec8272e58a0dea0e10b93 (patch)
treeb326f1e9f0a7e7be456da7abd28fb28083efe2b5 /src/server.c
parent42f5cf229efa2b20c642c7c0d7a2f3cd98b9a890 (diff)
- drobne upravy v suboroch, hlavne v scriptoch
git-svn-id: http://opensvn.csie.org/tuxanci_ng@26 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e
Diffstat (limited to 'src/server.c')
-rw-r--r--src/server.c96
1 files changed, 49 insertions, 47 deletions
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