diff options
Diffstat (limited to 'pw_rpc/channel.cc')
-rw-r--r-- | pw_rpc/channel.cc | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/pw_rpc/channel.cc b/pw_rpc/channel.cc index fb5eab2fa..70f426214 100644 --- a/pw_rpc/channel.cc +++ b/pw_rpc/channel.cc @@ -29,15 +29,17 @@ std::span<byte> Channel::OutputBuffer::payload(const Packet& packet) const { Status Channel::Send(OutputBuffer& buffer, const internal::Packet& packet) { Result encoded = packet.Encode(buffer.buffer_); - buffer.buffer_ = {}; if (!encoded.ok()) { - PW_LOG_ERROR("Failed to encode response packet to channel buffer"); - output().SendAndReleaseBuffer(0); + PW_LOG_ERROR("Failed to encode RPC response packet to channel %u buffer", + static_cast<unsigned>(id())); + output().DiscardBuffer(buffer.buffer_); + buffer.buffer_ = {}; return Status::Internal(); } - return output().SendAndReleaseBuffer(encoded.value().size()); + buffer.buffer_ = {}; + return output().SendAndReleaseBuffer(encoded.value()); } } // namespace pw::rpc::internal |