]> andersk Git - moira.git/blobdiff - dcm/dcm.c
*** empty log message ***
[moira.git] / dcm / dcm.c
index 3afa5defeb7a27a94985ce708a5fa991d8884f06..3d2b44fb7475a07a52837681c3a75d276871f833 100644 (file)
--- a/dcm/dcm.c
+++ b/dcm/dcm.c
@@ -212,10 +212,13 @@ do_services()
            
                com_err(whoami, status, " running %s", dfgen_prog);
                waits.w_status = system(dfgen_cmd);
-               /* extract the process's exit value */
-               status = waits.w_retcode;
-               if (status) {
-                   status += sms_err_base;
+               if (waits.w_termsig) {
+                   status = SMS_TAR_FAIL;
+                   com_err(whoami, status, " %s exited on signal %d",
+                           dfgen_prog, waits.w_termsig);
+               } else if (waits.w_retcode) {
+                   /* extract the process's exit value */
+                   status = waits.w_retcode + sms_err_base;
                    com_err(whoami, status, " %s exited", dfgen_prog);
                }
                if (SOFT_FAIL(status)) {
@@ -345,13 +348,13 @@ struct service *svc;
        }
        if (!shost.enable || shost.hosterror ||
            (shost.success && !shost.override &&
-            shost.lastsuccess > svc->dfgen)) {
+            shost.lastsuccess >= svc->dfgen)) {
            if (dbg & DBG_TRACE)
              com_err(whoami, 0, "not updating %s:%s", svc->service, machine);
            goto free_mach;
        }
        if (!shost.success || shost.override ||
-           shost.lasttry + svc->interval < tv.tv_sec) {
+           shost.lasttry + svc->interval <= tv.tv_sec) {
            lock_fd = maybe_lock_update(SMS_DIR, machine, svc->service, 1);
            if (lock_fd < 0)
              goto free_mach;
This page took 0.040441 seconds and 4 git commands to generate.