- if (!(bus = dbus_connection_open_private("unix:path=/run/systemd/private", &error))) {
-#ifndef LEGACY
- dbus_error_free(&error);
-
- /* Retry with the pre v21 socket name, to ease upgrades */
- if (!(bus = dbus_connection_open_private("unix:abstract=/org/freedesktop/systemd1/private", &error))) {
-#endif
- log_error("Failed to get D-Bus connection: %s", bus_error_message(&error));
- goto finish;
- }
-#ifndef LEGACY
- }
-#endif
-
- if (bus_check_peercred(bus) < 0) {
- log_error("Bus owner not root.");
- goto finish;
- }
-
- if (!(m = dbus_message_new_signal("/org/freedesktop/systemd1/agent", "org.freedesktop.systemd1.Agent", "Released"))) {
- log_error("Could not allocate signal message.");
- goto finish;
+ r = bus_connect_system_systemd(&bus);
+#else
+ /* Unlike in systemd where this has to use a private socket,
+ since elogind doesn't associate control groups with services
+ and doesn't manage the dbus service, we can just use the
+ system bus. */
+ r = sd_bus_open_system(&bus);
+#endif // 0
+
+ if (r < 0) {
+#if 0
+ /* If we couldn't connect we assume this was triggered
+ * while systemd got restarted/transitioned from
+ * initrd to the system, so let's ignore this */
+ log_debug_errno(r, "Failed to get D-Bus connection: %m");
+#else
+ /* If dbus isn't running or responding, there is nothing
+ * we can do about it. */
+ log_debug_errno(r, "Failed to open system bus: %m");
+#endif // 0
+ return EXIT_FAILURE;