diff options
author | Carlos Chinchilla <cachinchilla@google.com> | 2021-12-10 11:05:43 -0800 |
---|---|---|
committer | CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2021-12-13 20:09:54 +0000 |
commit | b5fa5d3382368516cf8a11204371c0cde4eb8bd4 (patch) | |
tree | 7cc6ab84476c478ec2e5b2d73a1526d4565d1fbf /pw_log_rpc | |
parent | 38fee79685436e1b2e0d69919150e639b57d1dd7 (diff) | |
download | pigweed-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.cc | 6 |
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()) { |