From 11239bc45b51f9cc9eaec8272e58a0dea0e10b93 Mon Sep 17 00:00:00 2001 From: oroborus Date: Tue, 18 Mar 2008 15:59:56 +0000 Subject: - drobne upravy v suboroch, hlavne v scriptoch git-svn-id: http://opensvn.csie.org/tuxanci_ng@26 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e --- src/server.c | 96 +++++++++++++++++++++++++++++++----------------------------- 1 file changed, 49 insertions(+), 47 deletions(-) (limited to 'src/server.c') 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 -- cgit v1.2.3