summaryrefslogtreecommitdiff
path: root/server/service.c
diff options
context:
space:
mode:
authorSimo Sorce <idra@samba.org>2008-10-21 13:57:35 -0400
committerSimo Sorce <idra@samba.org>2008-10-21 13:57:35 -0400
commitc38fcbf3df0131caebec0ce0414fc409b63e9d93 (patch)
treea6efbfb88ef5b4402a5d67581e53f0eec2881a72 /server/service.c
parent85f827f25a879a4499180d61742ba6bc22b04ccc (diff)
downloadsssd-c38fcbf3df0131caebec0ce0414fc409b63e9d93.tar.gz
sssd-c38fcbf3df0131caebec0ce0414fc409b63e9d93.tar.bz2
sssd-c38fcbf3df0131caebec0ce0414fc409b63e9d93.zip
Make return the pid when new process are started.
Monitor each service and restart it conditionally if it fails. These monitoring is extremely simple at this moment and just uses waitpid() to check if the client is alive, there is no active probing, that will require dbus. Make nsssrv.c read the sss pipe config option for the config db.
Diffstat (limited to 'server/service.c')
-rw-r--r--server/service.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/server/service.c b/server/service.c
index eaaa2c98..56a09712 100644
--- a/server/service.c
+++ b/server/service.c
@@ -53,14 +53,16 @@ int register_server_service(const char *name,
/*
initialise a server service
*/
-static int server_service_init(const char *name, struct event_context *ev)
+int server_service_init(const char *name,
+ struct event_context *ev,
+ pid_t *rpid)
{
struct registered_server *srv;
for (srv=registered_servers; srv; srv=srv->next) {
if (strcasecmp(name, srv->service_name) == 0) {
return task_server_startup(ev,
srv->service_name,
- srv->task_init);
+ srv->task_init, rpid);
}
}
return EINVAL;
@@ -83,7 +85,7 @@ int server_service_startup(struct event_context *event_ctx,
for (i = 0; server_services[i]; i++) {
int status;
- status = server_service_init(server_services[i], event_ctx);
+ status = server_service_init(server_services[i], event_ctx, NULL);
if (status != EOK) {
DEBUG(0,("Failed to start service '%s'\n",
server_services[i]));