summaryrefslogtreecommitdiff
path: root/server/monitor
diff options
context:
space:
mode:
authorStephen Gallagher <sgallagh@redhat.com>2009-05-14 12:21:37 -0400
committerSimo Sorce <ssorce@redhat.com>2009-05-15 19:09:52 -0400
commitd6b65c36b2b0391a37a78963fd679460b5bba60a (patch)
treed2f42080699a74ac3f146c71184077d5704eb667 /server/monitor
parent67ce05ee0351a4d014a726e7a2e6757e13e2a201 (diff)
downloadsssd-d6b65c36b2b0391a37a78963fd679460b5bba60a.tar.gz
sssd-d6b65c36b2b0391a37a78963fd679460b5bba60a.tar.bz2
sssd-d6b65c36b2b0391a37a78963fd679460b5bba60a.zip
Treat the local provider as a special case
The local provider needs no backend, so we'll create a special provider entry for it called "local" that will not attempt to retrieve provider configuration but will remain in the service list so it can be updated when the config file changes.
Diffstat (limited to 'server/monitor')
-rw-r--r--server/monitor/monitor.c17
1 files changed, 16 insertions, 1 deletions
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) {