mirror of
https://github.com/troglobit/finit.git
synced 2026-11-06 15:51:03 +00:00
Use pid_runpath() in svc_find_by_pidfile(), used by pidfile plugin
The pidfile plugin just listens to changes in files in /run or /var/run, so when trying to locate an svc_t from a file change we need to compare using the proper prefix path. Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This commit is contained in:
1 parent
91b550662e
commit
32d9afc7bb
3 files changed
+7
-6
No files matched your search
@@ -69,9 +69,6 @@ static void pidfile_callback(void *arg, int fd, int events)
|
|||||||
if (!svc)
|
if (!svc)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* TODO FIXME XXX WKZ check that pid is controlled by finit */
|
|
||||||
|
|
||||||
_d("%s: match %s", ev->name, svc->cmd);
|
|
||||||
mkcond(cond, sizeof(cond), svc->cmd);
|
mkcond(cond, sizeof(cond), svc->cmd);
|
||||||
if (ev->mask & (IN_CREATE | IN_ATTRIB | IN_MODIFY)) {
|
if (ev->mask & (IN_CREATE | IN_ATTRIB | IN_MODIFY)) {
|
||||||
svc_started(svc);
|
svc_started(svc);
|
||||||
|
|||||||
@@ -115,7 +115,8 @@ char *pid_runpath(char *file, char *path, size_t len)
|
|||||||
|
|
||||||
char *pid_file(svc_t *svc)
|
char *pid_file(svc_t *svc)
|
||||||
{
|
{
|
||||||
static char fn[MAX_ARG_LEN];
|
char fn[MAX_ARG_LEN];
|
||||||
|
static char path[MAX_ARG_LEN];
|
||||||
|
|
||||||
if (svc->pidfile[0]) {
|
if (svc->pidfile[0]) {
|
||||||
if (svc->pidfile[0] == '!')
|
if (svc->pidfile[0] == '!')
|
||||||
@@ -124,7 +125,8 @@ char *pid_file(svc_t *svc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
snprintf(fn, sizeof(fn), "%s%s.pid", _PATH_VARRUN, basename(svc->cmd));
|
snprintf(fn, sizeof(fn), "%s%s.pid", _PATH_VARRUN, basename(svc->cmd));
|
||||||
return fn;
|
|
||||||
|
return pid_runpath(fn, path, sizeof(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
int pid_file_create(svc_t *svc)
|
int pid_file_create(svc_t *svc)
|
||||||
|
|||||||
@@ -355,7 +355,9 @@ svc_t *svc_find_by_pidfile(char *fn)
|
|||||||
svc_t *svc, *iter = NULL;
|
svc_t *svc, *iter = NULL;
|
||||||
|
|
||||||
for (svc = svc_iterator(&iter, 1); svc; svc = svc_iterator(&iter, 0)) {
|
for (svc = svc_iterator(&iter, 1); svc; svc = svc_iterator(&iter, 0)) {
|
||||||
if (string_compare(fn, pid_file(svc)))
|
char path[MAX_ARG_LEN];
|
||||||
|
|
||||||
|
if (string_compare(pid_runpath(fn, path, sizeof(path)), pid_file(svc)))
|
||||||
return svc;
|
return svc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user