chiark / gitweb /
units: set HOME=/root when running shells
[elogind.git] / src / dbus-job.c
index 0956dcff6f4c6cdb1d78d6b6ae51de63dcbd2e03..0f76c7d8433cb061e3f2e53dfedfc65e55c0cee5 100644 (file)
@@ -1,4 +1,4 @@
-/*-*- Mode: C; c-basic-offset: 8 -*-*/
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
 
 /***
   This file is part of systemd.
@@ -28,7 +28,6 @@
 #define BUS_JOB_INTERFACE                                             \
         " <interface name=\"org.freedesktop.systemd1.Job\">\n"        \
         "  <method name=\"Cancel\"/>\n"                               \
-        "  <signal name=\"Changed\"/>\n"                              \
         "  <property name=\"Id\" type=\"u\" access=\"read\"/>\n"      \
         "  <property name=\"Unit\" type=\"(so)\" access=\"read\"/>\n" \
         "  <property name=\"JobType\" type=\"s\" access=\"read\"/>\n" \
         "<node>\n"                                                    \
         BUS_JOB_INTERFACE                                             \
         BUS_PROPERTIES_INTERFACE                                      \
+        BUS_PEER_INTERFACE                                            \
         BUS_INTROSPECTABLE_INTERFACE                                  \
         "</node>\n"
 
 const char bus_job_interface[] = BUS_JOB_INTERFACE;
 
+#define INVALIDATING_PROPERTIES                 \
+        "State\0"                               \
+        "\0"                                    \
+
 static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_job_append_state, job_state, JobState);
 static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_job_append_type, job_type, JobType);
 
@@ -123,11 +127,6 @@ static DBusHandlerResult bus_job_message_handler(DBusConnection *connection, DBu
         assert(message);
         assert(m);
 
-        log_debug("Got D-Bus request: %s.%s() on %s",
-                  dbus_message_get_interface(message),
-                  dbus_message_get_member(message),
-                  dbus_message_get_path(message));
-
         if ((r = manager_get_job_from_dbus_path(m, dbus_message_get_path(message), &j)) < 0) {
 
                 if (r == -ENOMEM)
@@ -177,10 +176,11 @@ void bus_job_send_change_signal(Job *j) {
         DBusMessage *m = NULL;
 
         assert(j);
-        assert(j->in_dbus_queue);
 
-        LIST_REMOVE(Job, dbus_queue, j->manager->dbus_job_queue, j);
-        j->in_dbus_queue = false;
+        if (j->in_dbus_queue) {
+                LIST_REMOVE(Job, dbus_queue, j->manager->dbus_job_queue, j);
+                j->in_dbus_queue = false;
+        }
 
         if (!bus_has_subscriber(j->manager) && !j->bus_client) {
                 j->sent_dbus_new_signal = true;
@@ -191,10 +191,11 @@ void bus_job_send_change_signal(Job *j) {
                 goto oom;
 
         if (j->sent_dbus_new_signal) {
-                /* Send a change signal */
+                /* Send a properties changed signal */
 
-                if (!(m = dbus_message_new_signal(p, "org.freedesktop.systemd1.Job", "Changed")))
+                if (!(m = bus_properties_changed_new(p, "org.freedesktop.systemd1.Job", INVALIDATING_PROPERTIES)))
                         goto oom;
+
         } else {
                 /* Send a new signal */