diff --git a/sidebus-common/src/rewrite.rs b/sidebus-common/src/rewrite.rs index a21e255..6f73557 100644 --- a/sidebus-common/src/rewrite.rs +++ b/sidebus-common/src/rewrite.rs @@ -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)?;