pw_rpc: Release acquired buffer in RawServerWriter destructor
This fixes a bug in the RawServerWriter where it would crash if the user
acquired a payload buffer but didn't release it.
Change-Id: I684f3c62a6f24d9a827e3d5258502f0bbfd0ddd4
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/23380
Commit-Queue: Alexei Frolov <frolv@google.com>
Pigweed-Auto-Submit: Alexei Frolov <frolv@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
diff --git a/pw_rpc/base_server_writer.cc b/pw_rpc/base_server_writer.cc
index 942cf32..8c57ee1 100644
--- a/pw_rpc/base_server_writer.cc
+++ b/pw_rpc/base_server_writer.cc
@@ -78,6 +78,15 @@
return call_.channel().Send(response_, ResponsePacket(payload));
}
+Status BaseServerWriter::ReleasePayloadBuffer() {
+ if (!open()) {
+ return Status::FailedPrecondition();
+ }
+
+ call_.channel().Release(response_);
+ return Status::Ok();
+}
+
void BaseServerWriter::Close() {
if (!open()) {
return;