rewrite: handle NoReplyExpected flag check
This commit is contained in:
parent
d6d075ea34
commit
6428695a6b
1 changed files with 10 additions and 1 deletions
|
|
@ -1,5 +1,7 @@
|
||||||
//! Utility for rewriting zbus::Messages (since they're immutable, we need to do this to "edit" them)
|
//! Utility for rewriting zbus::Messages (since they're immutable, we need to do this to "edit" them)
|
||||||
|
|
||||||
|
use tracing::trace;
|
||||||
|
|
||||||
pub struct RewriteMessage<'a> {
|
pub struct RewriteMessage<'a> {
|
||||||
builder: zbus::message::Builder<'a>,
|
builder: zbus::message::Builder<'a>,
|
||||||
header: zbus::message::Header<'a>,
|
header: zbus::message::Header<'a>,
|
||||||
|
|
@ -30,8 +32,15 @@ impl<'a> RewriteMessage<'a> {
|
||||||
.serial(header.primary().serial_num())
|
.serial(header.primary().serial_num())
|
||||||
.endian(header.primary().endian_sig().into());
|
.endian(header.primary().endian_sig().into());
|
||||||
for flag in header.primary().flags().iter() {
|
for flag in header.primary().flags().iter() {
|
||||||
|
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)?;
|
builder = builder.with_flags(flag)?;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if let Some(sender) = header.sender() {
|
if let Some(sender) = header.sender() {
|
||||||
builder = builder.sender(sender)?;
|
builder = builder.sender(sender)?;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue