core: rewind message before forwarding it

Forwarding messages that are not rewinded will drop data. Fix this for
cgroups-agent messages that we might remarshal before forwarding to the
system bus.
This commit is contained in:
David Herrmann
2015-03-11 16:36:41 +01:00
parent 908b8a42e6
commit 39881ed299
+11 -7
View File
@@ -88,15 +88,19 @@ static int signal_agent_released(sd_bus *bus, sd_bus_message *message, void *use
manager_notify_cgroup_empty(m, cgroup);
if (m->running_as == SYSTEMD_SYSTEM && m->system_bus) {
/* If we are running as system manager, forward the
* message to the system bus */
/* only forward to system bus if running as system instance */
if (m->running_as != SYSTEMD_SYSTEM || !m->system_bus)
return 0;
r = sd_bus_send(m->system_bus, message, NULL);
if (r < 0)
log_warning_errno(r, "Failed to forward Released message: %m");
}
r = sd_bus_message_rewind(message, 1);
if (r < 0)
goto exit;
r = sd_bus_send(m->system_bus, message, NULL);
exit:
if (r < 0)
log_warning_errno(r, "Failed to forward Released message: %m");
return 0;
}