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>
1 file changed
tree: 7cc6ab84476c478ec2e5b2d73a1526d4565d1fbf
  1. build_overrides/
  2. docker/
  3. docs/
  4. pw_allocator/
  5. pw_analog/
  6. pw_android_toolchain/
  7. pw_arduino_build/
  8. pw_assert/
  9. pw_assert_basic/
  10. pw_assert_log/
  11. pw_base64/
  12. pw_bloat/
  13. pw_blob_store/
  14. pw_bluetooth_hci/
  15. pw_boot/
  16. pw_boot_cortex_m/
  17. pw_build/
  18. pw_build_info/
  19. pw_build_mcuxpresso/
  20. pw_bytes/
  21. pw_checksum/
  22. pw_chrono/
  23. pw_chrono_embos/
  24. pw_chrono_freertos/
  25. pw_chrono_stl/
  26. pw_chrono_threadx/
  27. pw_cli/
  28. pw_console/
  29. pw_containers/
  30. pw_cpu_exception/
  31. pw_cpu_exception_cortex_m/
  32. pw_crypto/
  33. pw_docgen/
  34. pw_doctor/
  35. pw_env_setup/
  36. pw_file/
  37. pw_function/
  38. pw_fuzzer/
  39. pw_hdlc/
  40. pw_hex_dump/
  41. pw_i2c/
  42. pw_interrupt/
  43. pw_interrupt_cortex_m/
  44. pw_kvs/
  45. pw_libc/
  46. pw_log/
  47. pw_log_basic/
  48. pw_log_null/
  49. pw_log_rpc/
  50. pw_log_tokenized/
  51. pw_malloc/
  52. pw_malloc_freelist/
  53. pw_metric/
  54. pw_minimal_cpp_stdlib/
  55. pw_module/
  56. pw_multisink/
  57. pw_package/
  58. pw_persistent_ram/
  59. pw_polyfill/
  60. pw_preprocessor/
  61. pw_presubmit/
  62. pw_protobuf/
  63. pw_protobuf_compiler/
  64. pw_random/
  65. pw_result/
  66. pw_ring_buffer/
  67. pw_router/
  68. pw_rpc/
  69. pw_snapshot/
  70. pw_software_update/
  71. pw_span/
  72. pw_status/
  73. pw_stm32cube_build/
  74. pw_stream/
  75. pw_string/
  76. pw_symbolizer/
  77. pw_sync/
  78. pw_sync_baremetal/
  79. pw_sync_embos/
  80. pw_sync_freertos/
  81. pw_sync_stl/
  82. pw_sync_threadx/
  83. pw_sys_io/
  84. pw_sys_io_arduino/
  85. pw_sys_io_baremetal_lm3s6965evb/
  86. pw_sys_io_baremetal_stm32f429/
  87. pw_sys_io_mcuxpresso/
  88. pw_sys_io_stdio/
  89. pw_sys_io_stm32cube/
  90. pw_system/
  91. pw_target_runner/
  92. pw_thread/
  93. pw_thread_embos/
  94. pw_thread_freertos/
  95. pw_thread_stl/
  96. pw_thread_threadx/
  97. pw_tls_client/
  98. pw_tls_client_boringssl/
  99. pw_tls_client_mbedtls/
  100. pw_tokenizer/
  101. pw_tool/
  102. pw_toolchain/
  103. pw_trace/
  104. pw_trace_tokenized/
  105. pw_transfer/
  106. pw_unit_test/
  107. pw_varint/
  108. pw_watch/
  109. pw_web_ui/
  110. pw_work_queue/
  111. targets/
  112. third_party/
  113. .bazelignore
  114. .bazelrc
  115. .clang-format
  116. .clang-tidy
  117. .eslintrc.json
  118. .gitattributes
  119. .gitignore
  120. .gn
  121. .prettierrc.js
  122. .pylintrc
  123. activate.bat
  124. AUTHORS
  125. bootstrap.bat
  126. bootstrap.sh
  127. BUILD.bazel
  128. BUILD.gn
  129. BUILDCONFIG.gn
  130. CMakeLists.txt
  131. LICENSE
  132. modules.gni
  133. OWNERS
  134. package.json
  135. PW_PLUGINS
  136. README.md
  137. tsconfig.json
  138. WORKSPACE
  139. yarn.lock
README.md

Pigweed

Pigweed is an open source collection of embedded-targeted libraries–or as we like to call them, modules. These modules are building blocks and infrastructure that enable faster and more reliable development on small-footprint MMU-less 32-bit microcontrollers like the STMicroelectronics STM32L452 or the Nordic nRF52832.

For more information please see our website: https://pigweed.dev/

Links