X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fcore%2Fdbus-job.c;h=1b01ead2da89d203d1b4dd867368561aeb5e64f3;hp=ef839ffb55dafe8c88408a2908bc6133cd0e9f8d;hb=047e111bdddfed52dabc7ff8242c2eec78e126fb;hpb=97e6a11996855800f68dc41c13537784198c8b61 diff --git a/src/core/dbus-job.c b/src/core/dbus-job.c index ef839ffb5..1b01ead2d 100644 --- a/src/core/dbus-job.c +++ b/src/core/dbus-job.c @@ -100,7 +100,7 @@ static DBusHandlerResult bus_job_message_dispatch(Job *j, DBusConnection *connec if (!(reply = dbus_message_new_method_return(message))) goto oom; - job_finish_and_invalidate(j, JOB_CANCELED); + job_finish_and_invalidate(j, JOB_CANCELED, true); } else { const BusBoundProperties bps[] = { @@ -232,7 +232,7 @@ static int job_send_message(Job *j, DBusMessage* (*new_message)(Job *j)) { assert(j); assert(new_message); - if (bus_has_subscriber(j->manager)) { + if (bus_has_subscriber(j->manager) || j->forgot_bus_clients) { m = new_message(j); if (!m) goto oom; @@ -295,6 +295,7 @@ static DBusMessage* new_change_signal_message(Job *j) { if (!dbus_message_append_args(m, DBUS_TYPE_UINT32, &j->id, DBUS_TYPE_OBJECT_PATH, &p, + DBUS_TYPE_STRING, &j->unit->id, DBUS_TYPE_INVALID)) goto oom; } @@ -326,6 +327,7 @@ static DBusMessage* new_removed_signal_message(Job *j) { if (!dbus_message_append_args(m, DBUS_TYPE_UINT32, &j->id, DBUS_TYPE_OBJECT_PATH, &p, + DBUS_TYPE_STRING, &j->unit->id, DBUS_TYPE_STRING, &r, DBUS_TYPE_INVALID)) goto oom; @@ -347,7 +349,7 @@ void bus_job_send_change_signal(Job *j) { j->in_dbus_queue = false; } - if (!bus_has_subscriber(j->manager) && !j->bus_client_list) { + if (!bus_has_subscriber(j->manager) && !j->bus_client_list && !j->forgot_bus_clients) { j->sent_dbus_new_signal = true; return; } @@ -366,7 +368,7 @@ oom: void bus_job_send_removed_signal(Job *j) { assert(j); - if (!bus_has_subscriber(j->manager) && !j->bus_client_list) + if (!bus_has_subscriber(j->manager) && !j->bus_client_list && !j->forgot_bus_clients) return; if (!j->sent_dbus_new_signal)