X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=AcessNative%2Facesskernel_src%2Fserver.c;fp=AcessNative%2Facesskernel_src%2Fserver.c;h=2f6b46fd100dde29e89081b27f000f7d78e84759;hb=9d2ff6cf13e1a0ec5cbdc2773e1a3204e600b2e5;hp=02aa290a7d94d9208d44442d3921c5375d2f6136;hpb=2af6772f1d6597cb06b65782051fd0c4f13dfea4;p=tpg%2Facess2.git diff --git a/AcessNative/acesskernel_src/server.c b/AcessNative/acesskernel_src/server.c index 02aa290a..2f6b46fd 100644 --- a/AcessNative/acesskernel_src/server.c +++ b/AcessNative/acesskernel_src/server.c @@ -127,8 +127,15 @@ tClient *Server_GetClient(int ClientID) int Server_WorkerThread(void *ClientPtr) { tClient *Client = ClientPtr; - + + Log_Debug("Server", "Worker %p", ClientPtr); + #if USE_TCP + + while( *((volatile typeof(Client->Socket)*)&Client->Socket) == 0 ) + SDL_Delay(10); + Threads_SetThread( Client->ClientID ); + for( ;; ) { fd_set fds; @@ -137,11 +144,12 @@ int Server_WorkerThread(void *ClientPtr) FD_SET(Client->Socket, &fds); int rv = select(nfd, &fds, NULL, NULL, NULL); // TODO: Timeouts? - if(rv <= 0) { + if(rv < 0) { perror("select"); continue ; } - + Log_Debug("Server", "%p: rv=%i", Client, rv); + if( FD_ISSET(Client->Socket, &fds) ) { const int ciMaxParamCount = 6; @@ -275,6 +283,8 @@ int Server_WorkerThread(void *ClientPtr) free( retHeader ); } #endif + Log_Notice("Server", "Terminated Worker %p", ClientPtr); + return 0; } int SyscallServer(void) @@ -386,7 +396,7 @@ int Server_ListenThread(void *Unused) client->Socket = clientSock; } } - Log_Debug("Server", "Client given PID %i", authhdr.pid); + Log_Debug("Server", "Client given PID %i - info %p", authhdr.pid, client); len = send(clientSock, &authhdr, sizeof(authhdr), 0); if( len != sizeof(authhdr) ) {