assert(message);
assert(u);
+ r = bus_verify_manage_unit_async_for_kill(u->manager, message, error);
+ if (r < 0)
+ return r;
+ if (r == 0)
+ return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
+
r = sd_bus_message_read(message, "si", &swho, &signo);
if (r < 0)
return r;
if (signo <= 0 || signo >= _NSIG)
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Signal number out of range.");
- r = selinux_unit_access_check(u, bus, message, "stop", error);
+ r = selinux_unit_access_check(u, message, "stop", error);
if (r < 0)
return r;
assert(message);
assert(u);
- r = selinux_unit_access_check(u, bus, message, "reload", error);
+ r = bus_verify_manage_unit_async(u->manager, message, error);
+ if (r < 0)
+ return r;
+ if (r == 0)
+ return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
+
+ r = selinux_unit_access_check(u, message, "reload", error);
if (r < 0)
return r;
assert(message);
assert(u);
+ r = bus_verify_manage_unit_async(u->manager, message, error);
+ if (r < 0)
+ return r;
+ if (r == 0)
+ return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
+
r = sd_bus_message_read(message, "b", &runtime);
if (r < 0)
return r;
- r = selinux_unit_access_check(u, bus, message, "start", error);
+ r = selinux_unit_access_check(u, message, "start", error);
if (r < 0)
return r;
bus, p,
UNIT_VTABLE(u)->bus_interface,
NULL);
- if (r < 0) {
- log_warning("Failed to send out specific PropertiesChanged signal for %s: %s", u->id, strerror(-r));
+ if (r < 0)
return r;
- }
- r = sd_bus_emit_properties_changed_strv(
+ return sd_bus_emit_properties_changed_strv(
bus, p,
"org.freedesktop.systemd1.Unit",
NULL);
- if (r < 0) {
- log_warning("Failed to send out generic PropertiesChanged signal for %s: %s", u->id, strerror(-r));
- return r;
- }
-
- return 0;
}
void bus_unit_send_change_signal(Unit *u) {
}
r = selinux_unit_access_check(
- u, bus, message,
+ u, message,
(type == JOB_START || type == JOB_RESTART || type == JOB_TRY_RESTART) ? "start" :
type == JOB_STOP ? "stop" : "reload", error);
if (r < 0)
return r;
if (bus == u->manager->api_bus) {
- if (!j->subscribed) {
- r = sd_bus_track_new(bus, &j->subscribed, NULL, NULL);
+ if (!j->clients) {
+ r = sd_bus_track_new(bus, &j->clients, NULL, NULL);
if (r < 0)
return r;
}
- r = sd_bus_track_add_sender(j->subscribed, message);
+ r = sd_bus_track_add_sender(j->clients, message);
if (r < 0)
return r;
}