From: hadaq Date: Wed, 27 Aug 2003 13:09:03 +0000 (+0000) Subject: BUGFIXES -- mm X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=aecc0d33502e187400a6b676882b1f35341e60b7;p=daqdata.git BUGFIXES -- mm --- diff --git a/hadaq/agent.c b/hadaq/agent.c index f3f7b54..67a1fa0 100644 --- a/hadaq/agent.c +++ b/hadaq/agent.c @@ -1,8 +1,9 @@ -static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/agent.c,v 6.13 2003-05-14 13:54:42 muench Exp $"; +static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/agent.c,v 6.14 2003-08-27 13:09:03 hadaq Exp $"; #define _GNU_SOURCE #include #include +#include #include "agent.h" #include "worker.h" @@ -39,7 +40,7 @@ int *rpcworker_start_1(RpcWorker_startArgs * args, CLIENT * cl) char **argv; /* The closing NULL in argv cannot be passed via rpc, we have to add it - here */ + here */ argv = malloc((args->argv.argv_len + 1) * sizeof(char *)); @@ -48,7 +49,13 @@ int *rpcworker_start_1(RpcWorker_startArgs * args, CLIENT * cl) } argv[i] = NULL; + openlog("daq_agent", LOG_PID | LOG_PERROR, LOG_LOCAL0); + setlogmask(LOG_UPTO(LOG_INFO)); + Worker_start(args->name, argv); + + closelog(); + retVal = addWorker(argv[0]); free(argv); @@ -65,7 +72,13 @@ char **rpcworker_status_1(int *id, CLIENT * cl) { static char *retVal; + openlog("daq_agent", LOG_PID | LOG_PERROR, LOG_LOCAL0); + setlogmask(LOG_UPTO(LOG_INFO)); + retVal = Worker_status(getWorker(*id)); + + closelog(); + return &retVal; } @@ -78,7 +91,13 @@ int *rpcworker_stop_1(int *id, CLIENT * cl) { static int retVal; + openlog("daq_agent", LOG_PID | LOG_PERROR, LOG_LOCAL0); + setlogmask(LOG_UPTO(LOG_INFO)); + Worker_stop(getWorker(*id), 15); + + closelog(); + removeWorker(*id); retVal = 0; diff --git a/hadaq/worker.c b/hadaq/worker.c index be69797..a87cca5 100644 --- a/hadaq/worker.c +++ b/hadaq/worker.c @@ -1,4 +1,6 @@ -static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/worker.c,v 6.23 2003-08-27 12:40:39 muench Exp $"; +static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/worker.c,v 6.24 2003-08-27 13:09:03 hadaq Exp $"; + +#define WORKER_NEW_PROTOCOL #define _POSIX_C_SOURCE 199309L #include @@ -238,7 +240,7 @@ int Worker_start(const char *path, char *const argv[]) } else { if (my->pid == 0) { /* This is the child, we can not get out of */ /* this block */ - syslog(LOG_INFO, "Starting worker %d (%s)", my->pid, path); + syslog(LOG_INFO, "Starting worker %d (%s)", getpid(), path); if (0 > execvp(path, argv)) { syslog(LOG_DEBUG, "%s:%d: %s", __FILE__, __LINE__, strerror(errno)); syslog(LOG_EMERG, "Starting %s: %s", path, strerror(errno)); @@ -329,6 +331,8 @@ void Worker_stop(const char *name, int timeout) if (0 == kill(my->pid, SIGTERM)) { while (0 == kill(my->pid, 0)) { struct timespec t = { 1, 0 }; + + waitpid(my->pid, NULL, WNOHANG); nanosleep(&t, NULL); } }