SpiderScript - Fixes, SpiderWeb's print_test.sw works
[tpg/acess2.git] / AcessNative / acesskernel_src / server.c
index 725a326..264f412 100644 (file)
@@ -118,6 +118,7 @@ int Server_WorkerThread(void *ClientPtr)
        tRequestHeader  errorHeader;
         int    retSize = 0;
         int    sentSize;
+        int    cur_client_id = 0;
        
        #if USE_TCP
        #else
@@ -127,6 +128,11 @@ int Server_WorkerThread(void *ClientPtr)
                while( Client->CurrentRequest == NULL )
                        SDL_CondWait(Client->WaitFlag, Client->Mutex);
                
+               if(Client->ClientID != cur_client_id) {
+                       Threads_SetThread( Client->ClientID );
+                       cur_client_id = Client->ClientID;
+               }
+               
                Log_Debug("AcessSrv", "Worker %i takes %p",
                        Client->ClientID, Client->CurrentRequest);
                
@@ -245,9 +251,11 @@ int SyscallServer(void)
                tRequestHeader  *req = (void*)data;
                struct sockaddr_in      addr;
                uint    clientSize = sizeof(addr);
-                int    length = recvfrom(gSocket, data, BUFSIZ, 0, (struct sockaddr*)&addr, &clientSize);
+                int    length;
                tClient *client;
                
+               length = recvfrom(gSocket, data, BUFSIZ, 0, (struct sockaddr*)&addr, &clientSize);
+               
                if( length == -1 ) {
                        perror("SyscallServer - recv");
                        break;
@@ -259,7 +267,8 @@ int SyscallServer(void)
                        ntohl(addr.sin_addr.s_addr), ntohs(addr.sin_port));
                
                client = Server_GetClient(req->ClientID);
-               if( req->ClientID == 0 )
+               // NOTE: Hack - Should check if all zero
+               if( req->ClientID == 0 || client->ClientAddr.sin_port == 0 )
                {
                        memcpy(&client->ClientAddr, &addr, sizeof(addr));
                }

UCC git Repository :: git.ucc.asn.au