aboutsummaryrefslogtreecommitdiff
path: root/pw_log_rpc
diff options
context:
space:
mode:
authorCarlos Chinchilla <cachinchilla@google.com>2021-12-10 11:05:43 -0800
committerCQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com>2021-12-13 20:09:54 +0000
commitb5fa5d3382368516cf8a11204371c0cde4eb8bd4 (patch)
tree7cc6ab84476c478ec2e5b2d73a1526d4565d1fbf /pw_log_rpc
parent38fee79685436e1b2e0d69919150e639b57d1dd7 (diff)
downloadpigweed-b5fa5d3382368516cf8a11204371c0cde4eb8bd4.tar.gz
pw_log_rpc: Release payload buffer when active
The RpcLogDrain::server_writer_ can be closed asynchronously, by the client. Only release the payload buffer if the writer is still active, in order to leave the writer in a replaceable state. Change-Id: I1158463638bfe45c4f969e5f7f796a0c21a2a1d4 Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/73500 Reviewed-by: Keir Mierle <keir@google.com> Commit-Queue: Carlos Chinchilla <cachinchilla@google.com>
Diffstat (limited to 'pw_log_rpc')
-rw-r--r--pw_log_rpc/rpc_log_drain.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/pw_log_rpc/rpc_log_drain.cc b/pw_log_rpc/rpc_log_drain.cc
index 0e03c1617..2f1003c3c 100644
--- a/pw_log_rpc/rpc_log_drain.cc
+++ b/pw_log_rpc/rpc_log_drain.cc
@@ -58,7 +58,11 @@ Status RpcLogDrain::Flush() {
log_sink_state = EncodeOutgoingPacket(encoder, packed_entry_count);
// Avoid sending empty packets.
if (encoder.size() == 0) {
- server_writer_.ReleaseBuffer();
+ // Release buffer when still active to keep the writer in a replaceable
+ // state.
+ if (server_writer_.active()) {
+ server_writer_.ReleaseBuffer();
+ }
continue;
}
if (const Status status = server_writer_.Write(encoder); !status.ok()) {