X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=AcessNative%2Facesskernel_src%2Fserver.c;h=953722c0d726201fef838ac984d6d49c04fde57c;hb=7f1cbeafb4acc13d0cc7c11ac47df3efe473c106;hp=264f41220af27c1d08aa2197d171976de1472565;hpb=a6f11cb266052c58ae7e2d6d6e8abd34a9e93214;p=tpg%2Facess2.git diff --git a/AcessNative/acesskernel_src/server.c b/AcessNative/acesskernel_src/server.c index 264f4122..953722c0 100644 --- a/AcessNative/acesskernel_src/server.c +++ b/AcessNative/acesskernel_src/server.c @@ -38,6 +38,7 @@ typedef struct { // === IMPORTS === extern tRequestHeader *SyscallRecieve(tRequestHeader *Request, int *ReturnLength); extern int Threads_CreateRootProcess(void); +extern void Threads_SetThread(int TID); // HACK: Should have these in a header extern void Log_Debug(const char *Subsys, const char *Message, ...); extern void Log_Notice(const char *Subsys, const char *Message, ...); @@ -46,6 +47,7 @@ extern void Log_Notice(const char *Subsys, const char *Message, ...); tClient *Server_GetClient(int ClientID); int Server_WorkerThread(void *ClientPtr); int SyscallServer(void); + int Server_ListenThread(void *Unused); // === GLOBALS === #ifdef __WIN32__ @@ -56,6 +58,7 @@ SOCKET gSocket = INVALID_SOCKET; int gSocket = INVALID_SOCKET; #endif tClient gaServer_Clients[MAX_CLIENTS]; +SDL_Thread *gpServer_ListenThread; // === CODE === int Server_GetClientID(void) @@ -133,11 +136,12 @@ int Server_WorkerThread(void *ClientPtr) cur_client_id = Client->ClientID; } - Log_Debug("AcessSrv", "Worker %i takes %p", - Client->ClientID, Client->CurrentRequest); - // 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 @@ -229,7 +233,12 @@ int SyscallServer(void) #endif Log_Notice("AcessSrv", "Listening on 0.0.0.0:%i", SERVER_PORT); - + gpServer_ListenThread = SDL_CreateThread( Server_ListenThread, NULL ); + return 0; +} + +int Server_ListenThread(void *Unused) +{ // Wait for something to do :) for( ;; ) { @@ -294,6 +303,5 @@ int SyscallServer(void) SDL_CondSignal(client->WaitFlag); #endif } - return -1; }