X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fdbus.c;h=8e6e9fd520d4a838baa6474facf8e198cb2d9d7c;hb=4f4d6a7073e6aa740291bbe54da809024d372955;hp=81b4f53434666e8840a655f2a4435a4101fedc39;hpb=cbd37330bcd039587121a767280fc9fee597af6e;p=elogind.git diff --git a/src/dbus.c b/src/dbus.c index 81b4f5343..8e6e9fd52 100644 --- a/src/dbus.c +++ b/src/dbus.c @@ -370,7 +370,7 @@ static DBusHandlerResult api_bus_message_filter(DBusConnection *connection, DBus } else { r = manager_load_unit(m, name, NULL, &error, &u); - if (r >= 0 && u->meta.refuse_manual_start) + if (r >= 0 && u->refuse_manual_start) r = -EPERM; if (r >= 0) @@ -1196,7 +1196,9 @@ static void shutdown_connection(Manager *m, DBusConnection *c) { } dbus_connection_set_dispatch_status_function(c, NULL, NULL, NULL); - dbus_connection_flush(c); + /* system manager cannot afford to block on DBus */ + if (m->running_as != MANAGER_SYSTEM) + dbus_connection_flush(c); dbus_connection_close(c); dbus_connection_unref(c); }