diff options
author | David Teigland <teigland@redhat.com> | 2014-12-02 14:08:58 -0600 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2014-12-04 15:42:42 -0600 |
commit | 92d0ebfbcbad99b41c10d64d8eb8d4cb8ef862c3 (patch) | |
tree | f8160a4fb7e93ebd137c82f26b44ab9e1421b7f7 | |
parent | c49b7f9b27d5cc18ca42e1e16d660a46a75ec33c (diff) | |
download | lvm2-92d0ebfbcbad99b41c10d64d8eb8d4cb8ef862c3.tar.gz |
libdaemon: allow main processing function to be specified
-rw-r--r-- | libdaemon/server/daemon-server.c | 8 | ||||
-rw-r--r-- | libdaemon/server/daemon-server.h | 1 |
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; |