rewrite: handle NoReplyExpected flag check

This commit is contained in:
Val Packett 2025-07-16 04:37:13 -03:00
parent d6d075ea34
commit 6428695a6b

View file

@ -1,5 +1,7 @@
//! Utility for rewriting zbus::Messages (since they're immutable, we need to do this to "edit" them)
use tracing::trace;
pub struct RewriteMessage<'a> {
builder: zbus::message::Builder<'a>,
header: zbus::message::Header<'a>,
@ -30,7 +32,14 @@ impl<'a> RewriteMessage<'a> {
.serial(header.primary().serial_num())
.endian(header.primary().endian_sig().into());
for flag in header.primary().flags().iter() {
builder = builder.with_flags(flag)?;
if original.message_type() != zbus::message::Type::MethodCall
&& flag == zbus::message::Flags::NoReplyExpected
{
// clients like to set it on MethodReturn, but with_flags rejects that
trace!(type = ?original.message_type(), "NoReplyExpected flag on non-MethodCall");
} else {
builder = builder.with_flags(flag)?;
}
}
if let Some(sender) = header.sender() {
builder = builder.sender(sender)?;