mirror of
https://github.com/systemd/systemd
synced 2024-07-21 10:17:21 +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) {
|
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) {
|
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;
|
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[]) {
|
static int run(int argc, char *argv[]) {
|
||||||
_cleanup_(context_clear) Context context = {};
|
_cleanup_(context_clear) Context context = {};
|
||||||
_cleanup_(sd_event_unrefp) sd_event *event = NULL;
|
_cleanup_(sd_event_unrefp) sd_event *event = NULL;
|
||||||
|
@ -662,7 +668,13 @@ static int run(int argc, char *argv[]) {
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
log_warning_errno(r, "Failed to send readiness notification, ignoring: %m");
|
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)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to run event loop: %m");
|
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) {
|
static bool check_idle(void *userdata) {
|
||||||
Manager *m = userdata;
|
Manager *m = ASSERT_PTR(userdata);
|
||||||
|
|
||||||
if (m->operations)
|
if (m->operations)
|
||||||
return false;
|
return false;
|
||||||
|
@ -322,6 +322,9 @@ static bool check_idle(void *userdata) {
|
||||||
if (varlink_server_current_connections(m->varlink_machine_server) > 0)
|
if (varlink_server_current_connections(m->varlink_machine_server) > 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (!hashmap_isempty(m->polkit_registry))
|
||||||
|
return false;
|
||||||
|
|
||||||
manager_gc(m, true);
|
manager_gc(m, true);
|
||||||
|
|
||||||
return hashmap_isempty(m->machines);
|
return hashmap_isempty(m->machines);
|
||||||
|
|
|
@ -117,9 +117,10 @@ static int manager_startup(Manager *m) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool check_idle(void *userdata) {
|
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[]) {
|
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;
|
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[]) {
|
static int run(int argc, char *argv[]) {
|
||||||
_cleanup_(context_clear) Context context = {};
|
_cleanup_(context_clear) Context context = {};
|
||||||
_cleanup_(sd_event_unrefp) sd_event *event = NULL;
|
_cleanup_(sd_event_unrefp) sd_event *event = NULL;
|
||||||
|
@ -1164,7 +1170,13 @@ static int run(int argc, char *argv[]) {
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
log_warning_errno(r, "Failed to send readiness notification, ignoring: %m");
|
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)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to run event loop: %m");
|
return log_error_errno(r, "Failed to run event loop: %m");
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue