aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/ext/transport/chttp2
diff options
context:
space:
mode:
authorGravatar Mark D. Roth <roth@google.com>2018-02-14 13:08:01 -0800
committerGravatar Mark D. Roth <roth@google.com>2018-02-14 13:08:01 -0800
commit67f10123601a291ce9105140dcd8b92a286fb94e (patch)
tree732368ad3a37f4f459188037b2e47a8bdca7f79a /src/core/ext/transport/chttp2
parent2159f859c7f44baf0aa20d7527f56e1dcf684477 (diff)
Fix chttp2 to destroy the send_message byte stream upon error.
Diffstat (limited to 'src/core/ext/transport/chttp2')
-rw-r--r--src/core/ext/transport/chttp2/transport/chttp2_transport.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
index ad8da94cb3..2fc3c4fa41 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
@@ -1473,6 +1473,7 @@ static void perform_stream_op_locked(void* stream_op,
// streaming call might send another message before getting a
// recv_message failure, breaking out of its loop, and then
// starting recv_trailing_metadata.
+ grpc_byte_stream_destroy(op->payload->send_message.send_message);
grpc_chttp2_complete_closure_step(
t, s, &s->fetching_send_message_finished,
t->is_client && s->received_trailing_metadata
@@ -2092,7 +2093,10 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
GRPC_ERROR_REF(error),
"send_trailing_metadata_finished");
- s->fetching_send_message = nullptr;
+ if (s->fetching_send_message != nullptr) {
+ grpc_byte_stream_destroy(s->fetching_send_message);
+ s->fetching_send_message = nullptr;
+ }
grpc_chttp2_complete_closure_step(t, s, &s->fetching_send_message_finished,
GRPC_ERROR_REF(error),
"fetching_send_message_finished");