core: for queued reload message there is no need to store the bus explicitly

After all it can be derived from the message directly, and already is.
This commit is contained in:
Lennart Poettering 2015-04-29 19:02:08 +02:00
parent 9030ca462b
commit 8f88ecf623
3 changed files with 6 additions and 16 deletions

View File

@ -1166,7 +1166,6 @@ static int method_reload(sd_bus_message *message, void *userdata, sd_bus_error *
if (r < 0)
return r;
m->queued_message_bus = sd_bus_ref(sd_bus_message_get_bus(message));
m->exit_code = MANAGER_RELOAD;
return 1;

View File

@ -55,18 +55,15 @@ int bus_send_queued_message(Manager *m) {
if (!m->queued_message)
return 0;
assert(m->queued_message_bus);
/* If we cannot get rid of this message we won't dispatch any
* D-Bus messages, so that we won't end up wanting to queue
* another message. */
r = sd_bus_send(m->queued_message_bus, m->queued_message, NULL);
r = sd_bus_send(NULL, m->queued_message, NULL);
if (r < 0)
log_warning_errno(r, "Failed to send queued message: %m");
m->queued_message = sd_bus_message_unref(m->queued_message);
m->queued_message_bus = sd_bus_unref(m->queued_message_bus);
return 0;
}
@ -1031,12 +1028,8 @@ static void destroy_bus(Manager *m, sd_bus **bus) {
j->clients = sd_bus_track_unref(j->clients);
/* Get rid of queued message on this bus */
if (m->queued_message_bus == *bus) {
m->queued_message_bus = sd_bus_unref(m->queued_message_bus);
if (m->queued_message)
m->queued_message = sd_bus_message_unref(m->queued_message);
}
if (m->queued_message && sd_bus_message_get_bus(m->queued_message) == *bus)
m->queued_message = sd_bus_message_unref(m->queued_message);
/* Possibly flush unwritten data, but only if we are
* unprivileged, since we don't want to sync here */

View File

@ -199,11 +199,9 @@ struct Manager {
sd_bus_track *subscribed;
char **deserialized_subscribed;
sd_bus_message *queued_message; /* This is used during reloading:
* before the reload we queue the
* reply message here, and
* afterwards we send it */
sd_bus *queued_message_bus; /* The connection to send the queued message on */
/* This is used during reloading: before the reload we queue
* the reply message here, and afterwards we send it */
sd_bus_message *queued_message;
Hashmap *watch_bus; /* D-Bus names => Unit object n:1 */