+#ifdef ENABLE_KDBUS_TRANSPORT
+static int
+init_server_for_kdbus (BusContext *context,
+ const char *address,
+ DBusError *error)
+{
+ DBusBusType type;
+ DBusServer* server;
+ char* bus_address;
+
+ if (!strcmp (context->type, "system"))
+ type = DBUS_BUS_SYSTEM;
+ else if (!strcmp (context->type, "session"))
+ type = DBUS_BUS_SESSION;
+ else
+ type = DBUS_BUS_STARTER;
+
+ bus_address = make_kdbus_bus (type, address, error);
+ if (bus_address == NULL)
+ return -1;
+
+ server = empty_server_init (bus_address);
+ if (server == NULL)
+ {
+ free (bus_address);
+ return -1;
+ }
+ if (!_dbus_list_append (&context->servers, server))
+ {
+ free (bus_address);
+ return -2;
+ }
+
+ context->myKdbusConnection = daemon_as_client (type, bus_address, error);
+ if (context->myKdbusConnection == NULL)
+ return -1;
+
+ return 0;
+}
+#endif
+