if (mode < 0)
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Job mode %s is invalid.", smode);
- r = manager_load_unit(m, name, NULL, error, &u);
+ r = selinux_access_check(bus, message, "start", error);
if (r < 0)
return r;
- r = selinux_unit_access_check(u, bus, message, "start", error);
+ r = manager_load_unit(m, name, NULL, error, &u);
if (r < 0)
return r;
r = sd_bus_message_append(
reply, "(usssoo)",
j->id,
- job_state_to_string(j->state),
+ j->unit->id,
job_type_to_string(j->type),
+ job_state_to_string(j->state),
job_path,
unit_path);
if (r < 0)
if (!isempty(init)) {
ri = strdup(init);
if (!ri) {
- free(ri);
+ free(rt);
return -ENOMEM;
}
}
free(m->switch_root_init);
m->switch_root_init = ri;
+ m->exit_code = MANAGER_SWITCH_ROOT;
+
return sd_bus_reply_method_return(message, NULL);
}
SD_BUS_PROPERTY("Tainted", "s", property_get_tainted, 0, 0),
BUS_PROPERTY_DUAL_TIMESTAMP("FirmwareTimestamp", offsetof(Manager, firmware_timestamp), 0),
BUS_PROPERTY_DUAL_TIMESTAMP("LoaderTimestamp", offsetof(Manager, loader_timestamp), 0),
- BUS_PROPERTY_DUAL_TIMESTAMP("KernelTimestamp", offsetof(Manager, firmware_timestamp), 0),
+ BUS_PROPERTY_DUAL_TIMESTAMP("KernelTimestamp", offsetof(Manager, kernel_timestamp), 0),
BUS_PROPERTY_DUAL_TIMESTAMP("InitRDTimestamp", offsetof(Manager, initrd_timestamp), 0),
BUS_PROPERTY_DUAL_TIMESTAMP("UserspaceTimestamp", offsetof(Manager, userspace_timestamp), 0),
BUS_PROPERTY_DUAL_TIMESTAMP("FinishTimestamp", offsetof(Manager, finish_timestamp), 0),
Iterator i;
sd_bus *b;
unsigned n;
- int r;
+ int r, ret;
n = set_size(m->subscribed);
if (n <= 0)
return send_message(d->bus, isempty(d->name) ? NULL : d->name, userdata);
}
+ ret = 0;
+
/* Send to everybody */
SET_FOREACH(b, m->private_buses, i) {
r = send_message(b, NULL, userdata);
if (r < 0)
- return r;
+ ret = r;
}
- if (m->api_bus)
- return send_message(m->api_bus, NULL, userdata);
+ if (m->api_bus) {
+ r = send_message(m->api_bus, NULL, userdata);
+ if (r < 0)
+ ret = r;
+ }
- return 0;
+ return ret;
}
static int send_finished(sd_bus *bus, const char *destination, void *userdata) {
return sd_bus_send_to(bus, message, destination, NULL);
}
-int bus_manager_send_finished(
+void bus_manager_send_finished(
Manager *m,
usec_t firmware_usec,
usec_t loader_usec,
usec_t userspace_usec,
usec_t total_usec) {
+ int r;
+
assert(m);
- return bus_manager_foreach_client(m, send_finished,
- (usec_t[6]) { firmware_usec, loader_usec, kernel_usec, initrd_usec, userspace_usec, total_usec });
+ r = bus_manager_foreach_client(m, send_finished,
+ (usec_t[6]) { firmware_usec, loader_usec, kernel_usec, initrd_usec, userspace_usec, total_usec });
+ if (r < 0)
+ log_debug("Failed to send finished signal: %s", strerror(-r));
}
static int send_reloading(sd_bus *bus, const char *destination, void *userdata) {
return sd_bus_send_to(bus, message, destination, NULL);
}
-int bus_manager_send_reloading(Manager *m, bool active) {
+void bus_manager_send_reloading(Manager *m, bool active) {
+ int r;
+
assert(m);
- return bus_manager_foreach_client(m, send_reloading, INT_TO_PTR(active));
+ r = bus_manager_foreach_client(m, send_reloading, INT_TO_PTR(active));
+ if (r < 0)
+ log_debug("Failed to send reloading signal: %s", strerror(-r));
+
}