summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2014-12-02 14:08:58 -0600
committerDavid Teigland <teigland@redhat.com>2014-12-04 15:42:42 -0600
commit92d0ebfbcbad99b41c10d64d8eb8d4cb8ef862c3 (patch)
treef8160a4fb7e93ebd137c82f26b44ab9e1421b7f7
parentc49b7f9b27d5cc18ca42e1e16d660a46a75ec33c (diff)
downloadlvm2-92d0ebfbcbad99b41c10d64d8eb8d4cb8ef862c3.tar.gz
libdaemon: allow main processing function to be specified
-rw-r--r--libdaemon/server/daemon-server.c8
-rw-r--r--libdaemon/server/daemon-server.h1
2 files changed, 8 insertions, 1 deletions
diff --git a/libdaemon/server/daemon-server.c b/libdaemon/server/daemon-server.c
index a8afcc1de..8593a34e3 100644
--- a/libdaemon/server/daemon-server.c
+++ b/libdaemon/server/daemon-server.c
@@ -573,6 +573,12 @@ void daemon_start(daemon_state s)
if (!s.foreground)
kill(getppid(), SIGTERM);
+ if (s.daemon_main) {
+ if (!s.daemon_main(&s))
+ failed = 1;
+ goto out;
+ }
+
if (s.daemon_init)
if (!s.daemon_init(&s))
failed = 1;
@@ -591,7 +597,7 @@ void daemon_start(daemon_state s)
INFO(&s, "%s waiting for client threads to finish", s.name);
reap(s, 1);
-
+out:
/* If activated by systemd, do not unlink the socket - systemd takes care of that! */
if (!_systemd_activation && s.socket_fd >= 0)
if (unlink(s.socket_path))
diff --git a/libdaemon/server/daemon-server.h b/libdaemon/server/daemon-server.h
index a7673d455..2e82627e0 100644
--- a/libdaemon/server/daemon-server.h
+++ b/libdaemon/server/daemon-server.h
@@ -92,6 +92,7 @@ typedef struct daemon_state {
handle_request handler;
int (*daemon_init)(struct daemon_state *st);
int (*daemon_fini)(struct daemon_state *st);
+ int (*daemon_main)(struct daemon_state *st);
/* Global runtime info maintained by the framework. */
int socket_fd;