mirror of
https://github.com/systemd/systemd.git
synced 2024-11-02 19:21:53 +03:00
core: Rename Job.subscribed field to Job.clients
This reflects how this field will be used, to not only track where to send signals, but also which callers (other than root) are allowed to call DBus methods on the Job.
This commit is contained in:
parent
2ea31e5b13
commit
b39a2770ba
@ -132,7 +132,7 @@ void bus_job_send_change_signal(Job *j) {
|
||||
j->in_dbus_queue = false;
|
||||
}
|
||||
|
||||
r = bus_foreach_bus(j->manager, j->subscribed, j->sent_dbus_new_signal ? send_changed_signal : send_new_signal, j);
|
||||
r = bus_foreach_bus(j->manager, j->clients, j->sent_dbus_new_signal ? send_changed_signal : send_new_signal, j);
|
||||
if (r < 0)
|
||||
log_debug("Failed to send job change signal for %u: %s", j->id, strerror(-r));
|
||||
|
||||
@ -176,7 +176,7 @@ void bus_job_send_removed_signal(Job *j) {
|
||||
if (!j->sent_dbus_new_signal)
|
||||
bus_job_send_change_signal(j);
|
||||
|
||||
r = bus_foreach_bus(j->manager, j->subscribed, send_removed_signal, j);
|
||||
r = bus_foreach_bus(j->manager, j->clients, send_removed_signal, j);
|
||||
if (r < 0)
|
||||
log_debug("Failed to send job remove signal for %u: %s", j->id, strerror(-r));
|
||||
}
|
||||
|
@ -758,13 +758,13 @@ int bus_unit_queue_job(
|
||||
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;
|
||||
}
|
||||
|
@ -1048,8 +1048,8 @@ static void destroy_bus(Manager *m, sd_bus **bus) {
|
||||
m->subscribed = sd_bus_track_unref(m->subscribed);
|
||||
|
||||
HASHMAP_FOREACH(j, m->jobs, i)
|
||||
if (j->subscribed && sd_bus_track_get_bus(j->subscribed) == *bus)
|
||||
j->subscribed = sd_bus_track_unref(j->subscribed);
|
||||
if (j->clients && sd_bus_track_get_bus(j->clients) == *bus)
|
||||
j->clients = sd_bus_track_unref(j->clients);
|
||||
|
||||
/* Get rid of queued message on this bus */
|
||||
if (m->queued_message_bus == *bus) {
|
||||
|
@ -90,8 +90,8 @@ void job_free(Job *j) {
|
||||
|
||||
sd_event_source_unref(j->timer_event_source);
|
||||
|
||||
sd_bus_track_unref(j->subscribed);
|
||||
strv_free(j->deserialized_subscribed);
|
||||
sd_bus_track_unref(j->clients);
|
||||
strv_free(j->deserialized_clients);
|
||||
|
||||
free(j);
|
||||
}
|
||||
@ -937,7 +937,7 @@ int job_serialize(Job *j, FILE *f, FDSet *fds) {
|
||||
if (j->begin_usec > 0)
|
||||
fprintf(f, "job-begin="USEC_FMT"\n", j->begin_usec);
|
||||
|
||||
bus_track_serialize(j->subscribed, f);
|
||||
bus_track_serialize(j->clients, f);
|
||||
|
||||
/* End marker */
|
||||
fputc('\n', f);
|
||||
@ -1043,7 +1043,7 @@ int job_deserialize(Job *j, FILE *f, FDSet *fds) {
|
||||
|
||||
} else if (streq(l, "subscribed")) {
|
||||
|
||||
if (strv_extend(&j->deserialized_subscribed, v) < 0)
|
||||
if (strv_extend(&j->deserialized_clients, v) < 0)
|
||||
return log_oom();
|
||||
}
|
||||
}
|
||||
@ -1056,7 +1056,7 @@ int job_coldplug(Job *j) {
|
||||
|
||||
/* After deserialization is complete and the bus connection
|
||||
* set up again, let's start watching our subscribers again */
|
||||
r = bus_track_coldplug(j->manager, &j->subscribed, &j->deserialized_subscribed);
|
||||
r = bus_track_coldplug(j->manager, &j->clients, &j->deserialized_clients);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
@ -145,9 +145,15 @@ struct Job {
|
||||
sd_event_source *timer_event_source;
|
||||
usec_t begin_usec;
|
||||
|
||||
/* There can be more than one client, because of job merging. */
|
||||
sd_bus_track *subscribed;
|
||||
char **deserialized_subscribed;
|
||||
/*
|
||||
* This tracks where to send signals, and also which clients
|
||||
* are allowed to call DBus methods on the job (other than
|
||||
* root).
|
||||
*
|
||||
* There can be more than one client, because of job merging.
|
||||
*/
|
||||
sd_bus_track *clients;
|
||||
char **deserialized_clients;
|
||||
|
||||
JobResult result;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user