aboutsummaryrefslogtreecommitdiff
path: root/kcm/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'kcm/main.c')
-rw-r--r--kcm/main.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/kcm/main.c b/kcm/main.c
index ee691d5f2cbc..155983ac155d 100644
--- a/kcm/main.c
+++ b/kcm/main.c
@@ -36,6 +36,7 @@
RCSID("$Id$");
krb5_context kcm_context = NULL;
+extern const char *socket_path;
const char *service_name = "org.h5l.kcm";
@@ -87,16 +88,31 @@ main(int argc, char **argv)
signal(SIGPIPE, SIG_IGN);
#endif
if (detach_from_console && !launchd_flag && daemon_child == -1)
- roken_detach_prep(argc, argv, "--daemon-child");
+ daemon_child = roken_detach_prep(argc, argv, "--daemon-child");
rk_pidfile(NULL);
+ if (socket_path)
+ setenv("HEIM_IPC_DIR", socket_path, 1);
+
if (launchd_flag) {
heim_sipc mach;
- heim_sipc_launchd_mach_init(service_name, kcm_service, NULL, &mach);
+ ret = heim_sipc_launchd_mach_init(service_name, kcm_service, NULL, &mach);
+ if (ret)
+ krb5_err(kcm_context, 1, ret, "Could not setup launchd service");
} else {
heim_sipc un;
- heim_sipc_service_unix(service_name, kcm_service, NULL, &un);
+ ret = heim_sipc_service_unix(service_name, kcm_service, NULL, &un);
+ if (ret)
+ krb5_err(kcm_context, 1, ret, "Could not setup Unix domain socket service");
+ }
+#ifdef HAVE_DOOR_CREATE
+ {
+ heim_sipc door;
+ ret = heim_sipc_service_door(service_name, kcm_service, NULL, &door);
+ if (ret)
+ krb5_err(kcm_context, 1, ret, "Could not setup door service");
}
+#endif
roken_detach_finish(NULL, daemon_child);