diff options
author | Craig Tiller <ctiller@google.com> | 2015-11-03 07:04:30 -0800 |
---|---|---|
committer | Craig Tiller <ctiller@google.com> | 2015-11-03 07:04:30 -0800 |
commit | 4b65b1dec305edf96b05375155dc918c974a626a (patch) | |
tree | 2389e535cf271193ebb578b85503eacb8831cfed | |
parent | 592560310102a0ef6354ad0556a5a717e0dc73a0 (diff) |
Fix for returned status
If we already have a status from the wire when we're disconnecting,
leave it in place - don't overwrite it. Fixes disappearing_server_test.
-rw-r--r-- | src/core/transport/chttp2_transport.c | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c index 10f52f4923..3d98a4fb14 100644 --- a/src/core/transport/chttp2_transport.c +++ b/src/core/transport/chttp2_transport.c @@ -1026,18 +1026,13 @@ void grpc_chttp2_fake_status(grpc_exec_ctx *exec_ctx, stream_global->seen_error = 1; grpc_chttp2_list_add_check_read_ops(transport_global, stream_global); } - if (stream_global->published_trailing_metadata && - stream_global->recv_trailing_metadata_finished != NULL) { - /* last chance replacement: we've received trailing metadata, - but something more important has become available to signal - to the upper layers - drop what we've got, and then publish - what we want - which is safe because we haven't told anyone - about the metadata yet */ - grpc_chttp2_incoming_metadata_buffer_reset( - &stream_global->received_trailing_metadata); - stream_global->published_trailing_metadata = 0; - } - if (!stream_global->published_trailing_metadata) { + /* stream_global->recv_trailing_metadata_finished gives us a + last chance replacement: we've received trailing metadata, + but something more important has become available to signal + to the upper layers - drop what we've got, and then publish + what we want - which is safe because we haven't told anyone + about the metadata yet */ + if (!stream_global->published_trailing_metadata || stream_global->recv_trailing_metadata_finished != NULL) { grpc_mdctx *mdctx = TRANSPORT_FROM_GLOBAL(transport_global)->metadata_context; char status_string[GPR_LTOA_MIN_BUFSIZE]; |