dbus: don't hit an assert if we sent a changed signal for something not in the dbus queue (i.e. because it was deleted before it was fully created

This commit is contained in:
Lennart Poettering 2010-07-11 03:59:49 +02:00
parent 90d473a1c0
commit c0bd0cf7ff
2 changed files with 8 additions and 6 deletions

View file

@ -172,10 +172,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;

View file

@ -371,10 +371,11 @@ void bus_unit_send_change_signal(Unit *u) {
DBusMessage *m = NULL;
assert(u);
assert(u->meta.in_dbus_queue);
LIST_REMOVE(Meta, dbus_queue, u->meta.manager->dbus_unit_queue, &u->meta);
u->meta.in_dbus_queue = false;
if (u->meta.in_dbus_queue) {
LIST_REMOVE(Meta, dbus_queue, u->meta.manager->dbus_unit_queue, &u->meta);
u->meta.in_dbus_queue = false;
}
if (!bus_has_subscriber(u->meta.manager)) {
u->meta.sent_dbus_new_signal = true;