mirror of
https://github.com/systemd/systemd
synced 2024-07-08 20:15:55 +00:00
tree-wide: never consider service idle if polkit authentication is still pending
Let's be correct on this.
This commit is contained in:
parent
ac908152b3
commit
ec8bbd8adb
|
@ -1728,9 +1728,10 @@ static int manager_add_bus_objects(Manager *m) {
|
|||
}
|
||||
|
||||
static bool manager_check_idle(void *userdata) {
|
||||
Manager *m = userdata;
|
||||
Manager *m = ASSERT_PTR(userdata);
|
||||
|
||||
return hashmap_isempty(m->transfers);
|
||||
return hashmap_isempty(m->transfers) &&
|
||||
hashmap_isempty(m->polkit_registry);
|
||||
}
|
||||
|
||||
static void manager_parse_env(Manager *m) {
|
||||
|
|
|
@ -622,6 +622,12 @@ static int connect_bus(Context *c, sd_event *event, sd_bus **_bus) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
static bool context_check_idle(void *userdata) {
|
||||
Context *c = ASSERT_PTR(userdata);
|
||||
|
||||
return hashmap_isempty(c->polkit_registry);
|
||||
}
|
||||
|
||||
static int run(int argc, char *argv[]) {
|
||||
_cleanup_(context_clear) Context context = {};
|
||||
_cleanup_(sd_event_unrefp) sd_event *event = NULL;
|
||||
|
@ -662,7 +668,13 @@ static int run(int argc, char *argv[]) {
|
|||
if (r < 0)
|
||||
log_warning_errno(r, "Failed to send readiness notification, ignoring: %m");
|
||||
|
||||
r = bus_event_loop_with_idle(event, bus, "org.freedesktop.locale1", DEFAULT_EXIT_USEC, NULL, NULL);
|
||||
r = bus_event_loop_with_idle(
|
||||
event,
|
||||
bus,
|
||||
"org.freedesktop.locale1",
|
||||
DEFAULT_EXIT_USEC,
|
||||
context_check_idle,
|
||||
&context);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to run event loop: %m");
|
||||
|
||||
|
|
|
@ -311,7 +311,7 @@ static int manager_startup(Manager *m) {
|
|||
}
|
||||
|
||||
static bool check_idle(void *userdata) {
|
||||
Manager *m = userdata;
|
||||
Manager *m = ASSERT_PTR(userdata);
|
||||
|
||||
if (m->operations)
|
||||
return false;
|
||||
|
@ -322,6 +322,9 @@ static bool check_idle(void *userdata) {
|
|||
if (varlink_server_current_connections(m->varlink_machine_server) > 0)
|
||||
return false;
|
||||
|
||||
if (!hashmap_isempty(m->polkit_registry))
|
||||
return false;
|
||||
|
||||
manager_gc(m, true);
|
||||
|
||||
return hashmap_isempty(m->machines);
|
||||
|
|
|
@ -117,9 +117,10 @@ static int manager_startup(Manager *m) {
|
|||
}
|
||||
|
||||
static bool check_idle(void *userdata) {
|
||||
Manager *m = userdata;
|
||||
Manager *m = ASSERT_PTR(userdata);
|
||||
|
||||
return !m->operations;
|
||||
return !m->operations &&
|
||||
hashmap_isempty(m->polkit_registry);
|
||||
}
|
||||
|
||||
static int run(int argc, char *argv[]) {
|
||||
|
|
|
@ -1118,6 +1118,12 @@ static int connect_bus(Context *c, sd_event *event, sd_bus **_bus) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
static bool context_check_idle(void *userdata) {
|
||||
Context *c = ASSERT_PTR(userdata);
|
||||
|
||||
return hashmap_isempty(c->polkit_registry);
|
||||
}
|
||||
|
||||
static int run(int argc, char *argv[]) {
|
||||
_cleanup_(context_clear) Context context = {};
|
||||
_cleanup_(sd_event_unrefp) sd_event *event = NULL;
|
||||
|
@ -1164,7 +1170,13 @@ static int run(int argc, char *argv[]) {
|
|||
if (r < 0)
|
||||
log_warning_errno(r, "Failed to send readiness notification, ignoring: %m");
|
||||
|
||||
r = bus_event_loop_with_idle(event, bus, "org.freedesktop.timedate1", DEFAULT_EXIT_USEC, NULL, NULL);
|
||||
r = bus_event_loop_with_idle(
|
||||
event,
|
||||
bus,
|
||||
"org.freedesktop.timedate1",
|
||||
DEFAULT_EXIT_USEC,
|
||||
context_check_idle,
|
||||
&context);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to run event loop: %m");
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user