}
/* do it! */
- send_zgram("info", "DCM starting up");
do_services();
errno = 0;
leave("");
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)) {
goto free_mach;
}
if (!shost.enable || shost.hosterror ||
- (shost.success && shost.lastsuccess > svc->dfgen)) {
+ (shost.success && !shost.override &&
+ 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;