X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=AcessNative%2Facesskernel_src%2Fserver.c;h=78f7fa13dfcf8566716d933c3ba91e2cbd58ecd1;hb=42fb98c5f353bf3e7cfbc202e2ace886b0c85874;hp=953722c0d726201fef838ac984d6d49c04fde57c;hpb=a4d8188f730bcc25cd4a6f4799ac7d65eb707cf2;p=tpg%2Facess2.git diff --git a/AcessNative/acesskernel_src/server.c b/AcessNative/acesskernel_src/server.c index 953722c0..78f7fa13 100644 --- a/AcessNative/acesskernel_src/server.c +++ b/AcessNative/acesskernel_src/server.c @@ -131,18 +131,27 @@ int Server_WorkerThread(void *ClientPtr) while( Client->CurrentRequest == NULL ) SDL_CondWait(Client->WaitFlag, Client->Mutex); +// Log_Debug("AcessSrv", "Worker got message %p", Client->CurrentRequest); + if(Client->ClientID != cur_client_id) { +// Log_Debug("AcessSrv", "Client thread ID changed from %i to %i", +// cur_client_id, Client->ClientID); Threads_SetThread( Client->ClientID ); cur_client_id = Client->ClientID; } + // Debug + { + int callid = Client->CurrentRequest->CallID; + Log_Debug("AcessSrv", "Client %i request %i %s", + Client->ClientID, callid, + callid < N_SYSCALLS ? casSYSCALL_NAMES[callid] : "UNK" + ); + } + // Get the response retHeader = SyscallRecieve(Client->CurrentRequest, &retSize); - Log_Debug("AcessSrv", "Client %i request %i", - Client->ClientID, Client->CurrentRequest->CallID); - - if( !retHeader ) { // Return an error to the client printf("ERROR: SyscallRecieve failed\n"); @@ -156,13 +165,14 @@ int Server_WorkerThread(void *ClientPtr) retHeader->ClientID = Client->ClientID; // Mark the thread as ready for another job + free(Client->CurrentRequest); Client->CurrentRequest = 0; - Log_Debug("AcessSrv", "Sending %i to %x:%i (Client %i)", - retSize, ntohl(Client->ClientAddr.sin_addr.s_addr), - ntohs(Client->ClientAddr.sin_port), - Client->ClientID - ); +// Log_Debug("AcessSrv", "Sending %i to %x:%i (Client %i)", +// retSize, ntohl(Client->ClientAddr.sin_addr.s_addr), +// ntohs(Client->ClientAddr.sin_port), +// Client->ClientID +// ); // Return the data sentSize = sendto(gSocket, retHeader, retSize, 0, @@ -272,8 +282,8 @@ int Server_ListenThread(void *Unused) // Hand off to a worker thread // - TODO: Actually have worker threads - printf("%i bytes from %x:%i\n", length, - ntohl(addr.sin_addr.s_addr), ntohs(addr.sin_port)); +// Log_Debug("Server", "%i bytes from %x:%i", length, +// ntohl(addr.sin_addr.s_addr), ntohs(addr.sin_port)); client = Server_GetClient(req->ClientID); // NOTE: Hack - Should check if all zero @@ -296,9 +306,12 @@ int Server_ListenThread(void *Unused) continue; } - Log_Debug("AcessSrv", "Message from Client %i (%p)", - client->ClientID, client); - +// Log_Debug("AcessSrv", "Message from Client %i (%p)", +// client->ClientID, client); + + // Make a copy of the request data + req = malloc(length); + memcpy(req, data, length); client->CurrentRequest = req; SDL_CondSignal(client->WaitFlag); #endif