Fix: Loss of dynamic service on second reload (unmodified).

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This commit is contained in:
Joachim Nilsson
2015-06-29 01:25:45 +02:00
parent 05a8ace030
commit 838ec0423d
3 changed files with 13 additions and 3 deletions
+3 -3
View File
@@ -659,9 +659,9 @@ int service_register(int type, char *line, time_t mtime, char *username)
return errno = ENOMEM;
}
}
if (svc->mtime != mtime)
svc->dirty = 1;
svc->mtime = mtime;
/* New, recently modified or unchanged ... used on reload. */
svc_check_dirty(svc, mtime);
if (desc)
strlcpy(svc->desc, desc + 3, sizeof(svc->desc));
+9
View File
@@ -330,6 +330,15 @@ void svc_mark_dynamic(void)
}
}
void svc_check_dirty(svc_t *svc, time_t mtime)
{
if (svc->mtime != mtime)
svc->dirty = 1;
else
svc->dirty = 0;
svc->mtime = mtime;
}
/**
* svc_clean_dynamic - Stop and cleanup stale services removed from /etc/finit.d
* @cb: Callback to run for each stale service
+1
View File
@@ -128,6 +128,7 @@ void svc_foreach (void (*cb)(svc_t *));
void svc_foreach_dynamic (void (*cb)(svc_t *));
void svc_mark_dynamic (void);
void svc_check_dirty (svc_t *svc, time_t mtime);
void svc_clean_dynamic (void (*cb)(svc_t *));
char *svc_status (svc_t *svc);