version 1.6, 2007/07/24 19:53:14
|
version 1.7, 2007/07/25 19:43:47
|
|
|
| |
signal(SIGHUP, SIG_IGN); | signal(SIGHUP, SIG_IGN); |
| |
|
/* Ignore SIGCHLD: */ |
|
|
|
signal(SIGCHLD, SIG_IGN); |
|
|
/* Fork again (so we are not a session leader because our parent is): */ | /* Fork again (so we are not a session leader because our parent is): */ |
| |
pid = fork(); | pid = fork(); |
|
|
/* | /* |
**============================================================================== | **============================================================================== |
** | ** |
** HandleReapProviderAgentRequest() |
|
** |
|
**============================================================================== |
|
*/ |
|
|
|
static void HandleReapProviderAgentRequest(int sock) |
|
{ |
|
int status; |
|
struct ExecutorReapProviderAgentRequest request; |
|
struct ExecutorReapProviderAgentResponse response; |
|
|
|
memset(&response, 0, sizeof(response)); |
|
|
|
/* Read the request message. */ |
|
|
|
ReadExecutorRequest(sock, &request, sizeof(request)); |
|
|
|
/* Log request. */ |
|
|
|
Log(LL_TRACE, "HandleReapProviderAgentRequest(): pid=%d", request.pid); |
|
|
|
/* Perform operation. */ |
|
|
|
status = 0; |
|
|
|
do |
|
{ |
|
/* Wait on the PID. */ |
|
|
|
EXECUTOR_RESTART(waitpid(request.pid, 0, 0), status); |
|
|
|
if (status == -1) |
|
Log(LL_WARNING, "waitpid(%d, 0, 0) failed", request.pid); |
|
} |
|
while (0); |
|
|
|
/* Send response message. */ |
|
|
|
response.status = status; |
|
|
|
WriteExecutorResponse(sock, &response, sizeof(response)); |
|
} |
|
|
|
/* |
|
**============================================================================== |
|
** |
|
** HandleAuthenticatePasswordRequest() | ** HandleAuthenticatePasswordRequest() |
** | ** |
**============================================================================== | **============================================================================== |
|
|
HandleRemoveFileRequest(sock); | HandleRemoveFileRequest(sock); |
break; | break; |
| |
case EXECUTOR_REAP_PROVIDER_AGENT_MESSAGE: |
|
HandleReapProviderAgentRequest(sock); |
|
break; |
|
|
|
case EXECUTOR_AUTHENTICATE_PASSWORD_MESSAGE: | case EXECUTOR_AUTHENTICATE_PASSWORD_MESSAGE: |
HandleAuthenticatePasswordRequest(sock); | HandleAuthenticatePasswordRequest(sock); |
break; | break; |