(file) Return to Executor.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/Executor.cpp between version 1.1.2.2 and 1.1.2.3

version 1.1.2.2, 2007/01/02 07:47:24 version 1.1.2.3, 2007/01/02 17:53:21
Line 450 
Line 450 
  
 #if defined(PEGASUS_ENABLE_PRIVILEGE_SEPARATION) #if defined(PEGASUS_ENABLE_PRIVILEGE_SEPARATION)
  
   //==============================================================================
   //
   // _recv()
   //
   //     Receives *size* bytes from the given socket.
   //
   //==============================================================================
   
   static ssize_t _recv(int sock, void* buffer, size_t size)
   {
       size_t r = size;
       char* p = (char*)buffer;
   
       if (size == 0)
           return -1;
   
       while (r)
       {
           ssize_t n;
   
           CIMSERVERA_RESTART(read(sock, p, r), n);
   
           if (n == -1)
               return -1;
           else if (n == 0)
               return size - r;
   
           r -= n;
           p += n;
       }
   
       return size - r;
   }
   
   //==============================================================================
   //
   // _send()
   //
   //     Sends *size* bytes on the given socket.
   //
   //==============================================================================
   
   static ssize_t _send(int sock, void* buffer, size_t size)
   {
       size_t r = size;
       char* p = (char*)buffer;
   
       while (r)
       {
           ssize_t n;
           CIMSERVERA_RESTART(write(sock, p, r), n);
   
           if (n == -1)
               return -1;
           else if (n == 0)
               return size - r;
   
           r -= n;
           p += n;
       }
   
       return size - r;
   }
   
 static int _receiveDescriptorArray(int sock, int descriptors[], size_t count) static int _receiveDescriptorArray(int sock, int descriptors[], size_t count)
 { {
     // This control data begins with a cmsghdr struct followed by the data     // This control data begins with a cmsghdr struct followed by the data
Line 515 
Line 579 
 { {
     AutoMutex autoMutex(_mutex);     AutoMutex autoMutex(_mutex);
  
     // Send request header:      // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_PING_REQUEST;     header.code = EXECUTOR_PING_REQUEST;
  
     if (Send(_getSock(), &header, sizeof(header)) != sizeof(header))      if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return -1;         return -1;
  
     ExecutorPingResponse response;     ExecutorPingResponse response;
  
     if (Recv(_getSock(), &response, sizeof(response)) != sizeof(response))      if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))
         return -1;         return -1;
  
     if (response.magic == EXECUTOR_PING_MAGIC)     if (response.magic == EXECUTOR_PING_MAGIC)
Line 543 
Line 607 
     if (mode != 'r' && mode != 'w')     if (mode != 'r' && mode != 'w')
         return NULL;         return NULL;
  
     // Send request header:      // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_OPEN_FILE_REQUEST;     header.code = EXECUTOR_OPEN_FILE_REQUEST;
  
     if (Send(_getSock(), &header, sizeof(header)) != sizeof(header))      if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return NULL;         return NULL;
  
     // Send request body.      // _send request body.
  
     ExecutorOpenFileRequest request;     ExecutorOpenFileRequest request;
     memset(&request, 0, sizeof(request));     memset(&request, 0, sizeof(request));
     Strlcpy(request.path, path, EXECUTOR_BUFFER_SIZE);     Strlcpy(request.path, path, EXECUTOR_BUFFER_SIZE);
     request.mode = mode;     request.mode = mode;
  
     if (Send(_getSock(), &request, sizeof(request)) != sizeof(request))      if (_send(_getSock(), &request, sizeof(request)) != sizeof(request))
         return NULL;         return NULL;
  
     // Receive the response     // Receive the response
  
     ExecutorOpenFileResponse response;     ExecutorOpenFileResponse response;
  
     if (Recv(_getSock(), &response, sizeof(response)) != sizeof(response))      if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))
         return NULL;         return NULL;
  
     // Receive descriptor (if response successful).     // Receive descriptor (if response successful).
Line 597 
Line 661 
 { {
     AutoMutex autoMutex(_mutex);     AutoMutex autoMutex(_mutex);
  
     // Send request header:      // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_RENAME_FILE_REQUEST;     header.code = EXECUTOR_RENAME_FILE_REQUEST;
  
     if (Send(_getSock(), &header, sizeof(header)) != sizeof(header))      if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return -1;         return -1;
  
     // Send request body.      // _send request body.
  
     ExecutorRenameFileRequest request;     ExecutorRenameFileRequest request;
     memset(&request, 0, sizeof(request));     memset(&request, 0, sizeof(request));
     Strlcpy(request.oldPath, oldPath, EXECUTOR_BUFFER_SIZE);     Strlcpy(request.oldPath, oldPath, EXECUTOR_BUFFER_SIZE);
     Strlcpy(request.newPath, newPath, EXECUTOR_BUFFER_SIZE);     Strlcpy(request.newPath, newPath, EXECUTOR_BUFFER_SIZE);
  
     if (Send(_getSock(), &request, sizeof(request)) != sizeof(request))      if (_send(_getSock(), &request, sizeof(request)) != sizeof(request))
         return -1;         return -1;
  
     // Receive the response     // Receive the response
  
     ExecutorRenameFileResponse response;     ExecutorRenameFileResponse response;
  
     if (Recv(_getSock(), &response, sizeof(response)) != sizeof(response))      if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))
         return -1;         return -1;
  
     return response.status;     return response.status;
Line 630 
Line 694 
 { {
     AutoMutex autoMutex(_mutex);     AutoMutex autoMutex(_mutex);
  
     // Send request header:      // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_REMOVE_FILE_REQUEST;     header.code = EXECUTOR_REMOVE_FILE_REQUEST;
  
     if (Send(_getSock(), &header, sizeof(header)) != sizeof(header))      if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return -1;         return -1;
  
     // Send request body.      // _send request body.
  
     ExecutorRemoveFileRequest request;     ExecutorRemoveFileRequest request;
     memset(&request, 0, sizeof(request));     memset(&request, 0, sizeof(request));
     Strlcpy(request.path, path, EXECUTOR_BUFFER_SIZE);     Strlcpy(request.path, path, EXECUTOR_BUFFER_SIZE);
  
     if (Send(_getSock(), &request, sizeof(request)) != sizeof(request))      if (_send(_getSock(), &request, sizeof(request)) != sizeof(request))
         return -1;         return -1;
  
     // Receive the response     // Receive the response
  
     ExecutorRemoveFileResponse response;     ExecutorRemoveFileResponse response;
  
     if (Recv(_getSock(), &response, sizeof(response)) != sizeof(response))      if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))
         return -1;         return -1;
  
     return response.status;     return response.status;
Line 677 
Line 741 
     if (n >= EXECUTOR_BUFFER_SIZE)     if (n >= EXECUTOR_BUFFER_SIZE)
         return -1;         return -1;
  
     // Send request header:      // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_START_PROVIDER_AGENT_REQUEST;     header.code = EXECUTOR_START_PROVIDER_AGENT_REQUEST;
  
     if (Send(_getSock(), &header, sizeof(header)) != sizeof(header))      if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return -1;         return -1;
  
     // Send request body.      // _send request body.
  
     ExecutorStartProviderAgentRequest request;     ExecutorStartProviderAgentRequest request;
     memset(&request, 0, sizeof(request));     memset(&request, 0, sizeof(request));
Line 693 
Line 757 
     request.uid = uid;     request.uid = uid;
     request.gid = gid;     request.gid = gid;
  
     if (Send(_getSock(), &request, sizeof(request)) != sizeof(request))      if (_send(_getSock(), &request, sizeof(request)) != sizeof(request))
         return -1;         return -1;
  
     // Receive the response     // Receive the response
  
     ExecutorStartProviderAgentResponse response;     ExecutorStartProviderAgentResponse response;
  
     if (Recv(_getSock(), &response, sizeof(response)) != sizeof(response))      if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))
         return -1;         return -1;
  
     // Check response status and pid.     // Check response status and pid.
Line 741 
Line 805 
 { {
     AutoMutex autoMutex(_mutex);     AutoMutex autoMutex(_mutex);
  
     // Send request header:      // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_DAEMONIZE_EXECUTOR_REQUEST;     header.code = EXECUTOR_DAEMONIZE_EXECUTOR_REQUEST;
  
     if (Send(_getSock(), &header, sizeof(header)) != sizeof(header))      if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return -1;         return -1;
  
     // Receive the response     // Receive the response
  
     ExecutorDaemonizeExecutorResponse response;     ExecutorDaemonizeExecutorResponse response;
  
     if (Recv(_getSock(), &response, sizeof(response)) != sizeof(response))      if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))
         return -1;         return -1;
  
     return response.status;     return response.status;
Line 765 
Line 829 
 { {
     AutoMutex autoMutex(_mutex);     AutoMutex autoMutex(_mutex);
  
     // Send request header:      // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_CHANGE_OWNER_REQUEST;     header.code = EXECUTOR_CHANGE_OWNER_REQUEST;
  
     if (Send(_getSock(), &header, sizeof(header)) != sizeof(header))      if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return -1;         return -1;
  
     // Send request body:      // _send request body:
  
     ExecutorChangeOwnerRequest request;     ExecutorChangeOwnerRequest request;
     Strlcpy(request.path, path, sizeof(request.path));     Strlcpy(request.path, path, sizeof(request.path));
     Strlcpy(request.owner, owner, sizeof(request.owner));     Strlcpy(request.owner, owner, sizeof(request.owner));
  
     if (Send(_getSock(), &request, sizeof(request)) != sizeof(request))      if (_send(_getSock(), &request, sizeof(request)) != sizeof(request))
         return -1;         return -1;
  
     // Receive the response     // Receive the response
  
     ExecutorChangeOwnerResponse response;     ExecutorChangeOwnerResponse response;
  
     if (Recv(_getSock(), &response, sizeof(response)) != sizeof(response))      if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))
         return -1;         return -1;
  
     return response.status;     return response.status;
Line 797 
Line 861 
 { {
     AutoMutex autoMutex(_mutex);     AutoMutex autoMutex(_mutex);
  
     // Send request header:      // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_WAIT_PID_REQUEST;     header.code = EXECUTOR_WAIT_PID_REQUEST;
  
     if (Send(_getSock(), &header, sizeof(header)) != sizeof(header))      if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return -1;         return -1;
  
     // Send request body:      // _send request body:
  
     ExecutorWaitPidRequest request;     ExecutorWaitPidRequest request;
     request.pid = pid;     request.pid = pid;
  
     if (Send(_getSock(), &request, sizeof(request)) != sizeof(request))      if (_send(_getSock(), &request, sizeof(request)) != sizeof(request))
         return -1;         return -1;
  
     // Receive the response     // Receive the response
  
     ExecutorWaitPidResponse response;     ExecutorWaitPidResponse response;
  
     if (Recv(_getSock(), &response, sizeof(response)) != sizeof(response))      if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))
         return -1;         return -1;
  
     return response.status;     return response.status;
Line 829 
Line 893 
 { {
     AutoMutex autoMutex(_mutex);     AutoMutex autoMutex(_mutex);
  
     // Send request header:      // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_PAM_AUTHENTICATE_REQUEST;     header.code = EXECUTOR_PAM_AUTHENTICATE_REQUEST;
  
     if (Send(_getSock(), &header, sizeof(header)) != sizeof(header))      if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return -1;         return -1;
  
     // Send request body.      // _send request body.
  
     ExecutorPAMAuthenticateRequest request;     ExecutorPAMAuthenticateRequest request;
     memset(&request, 0, sizeof(request));     memset(&request, 0, sizeof(request));
     Strlcpy(request.username, username, EXECUTOR_BUFFER_SIZE);     Strlcpy(request.username, username, EXECUTOR_BUFFER_SIZE);
     Strlcpy(request.password, password, EXECUTOR_BUFFER_SIZE);     Strlcpy(request.password, password, EXECUTOR_BUFFER_SIZE);
  
     if (Send(_getSock(), &request, sizeof(request)) != sizeof(request))      if (_send(_getSock(), &request, sizeof(request)) != sizeof(request))
         return -1;         return -1;
  
     // Receive the response     // Receive the response
  
     ExecutorPAMAuthenticateResponse response;     ExecutorPAMAuthenticateResponse response;
  
     if (Recv(_getSock(), &response, sizeof(response)) != sizeof(response))      if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))
         return -1;         return -1;
  
     return response.status;     return response.status;
Line 862 
Line 926 
 { {
     AutoMutex autoMutex(_mutex);     AutoMutex autoMutex(_mutex);
  
     // Send request header:      // _send request header:
  
     ExecutorRequestHeader header;     ExecutorRequestHeader header;
     header.code = EXECUTOR_PAM_VALIDATE_USER_REQUEST;     header.code = EXECUTOR_PAM_VALIDATE_USER_REQUEST;
  
     if (Send(_getSock(), &header, sizeof(header)) != sizeof(header))      if (_send(_getSock(), &header, sizeof(header)) != sizeof(header))
         return -1;         return -1;
  
     // Send request body.      // _send request body.
  
     ExecutorPAMValidateUserRequest request;     ExecutorPAMValidateUserRequest request;
     memset(&request, 0, sizeof(request));     memset(&request, 0, sizeof(request));
     Strlcpy(request.username, username, EXECUTOR_BUFFER_SIZE);     Strlcpy(request.username, username, EXECUTOR_BUFFER_SIZE);
  
     if (Send(_getSock(), &request, sizeof(request)) != sizeof(request))      if (_send(_getSock(), &request, sizeof(request)) != sizeof(request))
         return -1;         return -1;
  
     // Receive the response     // Receive the response
  
     ExecutorPAMValidateUserResponse response;     ExecutorPAMValidateUserResponse response;
  
     if (Recv(_getSock(), &response, sizeof(response)) != sizeof(response))      if (_recv(_getSock(), &response, sizeof(response)) != sizeof(response))
         return -1;         return -1;
  
     return response.status;     return response.status;


Legend:
Removed from v.1.1.2.2  
changed lines
  Added in v.1.1.2.3

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2