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:
+11
-7
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user