diff options
-rw-r--r-- | server/examples/sssd.conf | 1 | ||||
-rw-r--r-- | server/monitor/monitor.c | 17 |
2 files changed, 17 insertions, 1 deletions
diff --git a/server/examples/sssd.conf b/server/examples/sssd.conf index a480b549..1841152a 100644 --- a/server/examples/sssd.conf +++ b/server/examples/sssd.conf @@ -60,6 +60,7 @@ description = Domains served by SSSD ; [domains/LOCAL] ; description = LOCAL Users domain +; provider = local ; enumerate = 3 ; minId = 500 ; maxId = 999 diff --git a/server/monitor/monitor.c b/server/monitor/monitor.c index 1d8f33e4..91015410 100644 --- a/server/monitor/monitor.c +++ b/server/monitor/monitor.c @@ -516,6 +516,11 @@ static int service_signal_reload(struct mt_svc *svc) DBusConnection *conn; DBusPendingCall *pending_reply; + if (svc->provider && strcasecmp(svc->provider, "local") == 0) { + /* The local provider requires no signaling */ + return EOK; + } + conn = sbus_get_connection(svc->mt_conn->conn_ctx); msg = dbus_message_new_method_call(NULL, SERVICE_PATH, @@ -954,7 +959,7 @@ static int update_monitor_config(struct mt_ctx *ctx) cur_svc = cur_svc->next; } if (cur_svc == NULL) { - DEBUG(0, ("Service entry missing data\n")); + DEBUG(0, ("Service entry missing data for [%s]\n", new_dom->name)); /* This shouldn't be possible */ talloc_free(new_config); @@ -1911,6 +1916,16 @@ static void service_startup_handler(struct tevent_context *ev, return; } + if (mt_svc->provider && strcasecmp(mt_svc->provider, "local") == 0) { + /* The LOCAL provider requires no back-end currently + * We'll add it to the service list, but we don't need + * to poll it. + */ + DLIST_ADD(mt_svc->mt_ctx->svc_list, mt_svc); + talloc_set_destructor((TALLOC_CTX *)mt_svc, delist_service); + return; + } + mt_svc->pid = fork(); if (mt_svc->pid != 0) { if (mt_svc->pid == -1) { |