chiark / gitweb /
util: when formatting timestamps return '0' for 0 timestamps instead of empty string
[elogind.git] / src / dbus.c
index 7f8b6a05d5481ccad43184b8212e08cf476a16a5..0ab55b85395c44808b996024a63f98db8e15cdd6 100644 (file)
@@ -474,11 +474,14 @@ static DBusHandlerResult system_bus_message_filter(DBusConnection *connection, D
 
 static DBusHandlerResult private_bus_message_filter(DBusConnection *connection, DBusMessage *message, void *data) {
         Manager *m = data;
+        DBusError error;
 
         assert(connection);
         assert(message);
         assert(m);
 
+        dbus_error_init(&error);
+
         if (dbus_message_get_type(message) == DBUS_MESSAGE_TYPE_METHOD_CALL ||
             dbus_message_get_type(message) == DBUS_MESSAGE_TYPE_SIGNAL)
                 log_debug("Got D-Bus request: %s.%s() on %s",
@@ -488,6 +491,18 @@ static DBusHandlerResult private_bus_message_filter(DBusConnection *connection,
 
         if (dbus_message_is_signal(message, DBUS_INTERFACE_LOCAL, "Disconnected"))
                 shutdown_connection(m, connection);
+        else if (dbus_message_is_signal(message, "org.freedesktop.systemd1.Agent", "Released")) {
+                const char *cgroup;
+
+                if (!dbus_message_get_args(message, &error,
+                                           DBUS_TYPE_STRING, &cgroup,
+                                           DBUS_TYPE_INVALID))
+                        log_error("Failed to parse Released message: %s", error.message);
+                else
+                        cgroup_notify_empty(m, cgroup);
+        }
+
+        dbus_error_free(&error);
 
         return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
 }
@@ -758,7 +773,6 @@ static void bus_new_connection(
 
 static int bus_init_system(Manager *m) {
         DBusError error;
-        char *id;
         int r;
 
         assert(m);
@@ -800,10 +814,13 @@ static int bus_init_system(Manager *m) {
                 goto fail;
         }
 
-        log_info("Successfully connected to system D-Bus bus %s as %s",
-                 strnull((id = dbus_connection_get_server_id(m->system_bus))),
-                 strnull(dbus_bus_get_unique_name(m->system_bus)));
-        dbus_free(id);
+        if (m->api_bus != m->system_bus) {
+                char *id;
+                log_info("Successfully connected to system D-Bus bus %s as %s",
+                         strnull((id = dbus_connection_get_server_id(m->system_bus))),
+                         strnull(dbus_bus_get_unique_name(m->system_bus)));
+                dbus_free(id);
+        }
 
         return 0;
 
@@ -816,7 +833,6 @@ fail:
 
 static int bus_init_api(Manager *m) {
         DBusError error;
-        char *id;
         int r;
 
         assert(m);
@@ -884,10 +900,13 @@ static int bus_init_api(Manager *m) {
         if ((r = query_name_list(m)) < 0)
                 goto fail;
 
-        log_info("Successfully connected to API D-Bus bus %s as %s",
-                 strnull((id = dbus_connection_get_server_id(m->api_bus))),
-                 strnull(dbus_bus_get_unique_name(m->api_bus)));
-        dbus_free(id);
+        if (m->api_bus != m->system_bus) {
+                char *id;
+                log_info("Successfully connected to API D-Bus bus %s as %s",
+                         strnull((id = dbus_connection_get_server_id(m->api_bus))),
+                         strnull(dbus_bus_get_unique_name(m->api_bus)));
+                dbus_free(id);
+        }
 
         return 0;