Merge changes in transport from #11780

pull/11782/head
Muxi Yan 7 years ago
commit cf7c318fd3
  1. 17
      src/core/ext/transport/chttp2/transport/chttp2_transport.c
  2. 4
      src/core/ext/transport/chttp2/transport/writing.c

@ -1692,8 +1692,8 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_exec_ctx *exec_ctx,
&s->frame_storage); &s->frame_storage);
grpc_slice_buffer_reset_and_unref_internal( grpc_slice_buffer_reset_and_unref_internal(
exec_ctx, &s->unprocessed_incoming_frames_buffer); exec_ctx, &s->unprocessed_incoming_frames_buffer);
error = error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Stream decompression error."); "Stream decompression error.");
} else { } else {
error = grpc_deframe_unprocessed_incoming_frames( error = grpc_deframe_unprocessed_incoming_frames(
exec_ctx, &s->data_parser, s, &s->decompressed_data_buffer, exec_ctx, &s->data_parser, s, &s->decompressed_data_buffer,
@ -1754,16 +1754,14 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_exec_ctx *exec_ctx,
* maybe decompress the next 5 bytes in the stream. */ * maybe decompress the next 5 bytes in the stream. */
bool end_of_context; bool end_of_context;
if (!s->stream_decompression_ctx) { if (!s->stream_decompression_ctx) {
s->stream_decompression_ctx = s->stream_decompression_ctx = grpc_stream_compression_context_create(
grpc_stream_compression_context_create(
GRPC_STREAM_COMPRESSION_DECOMPRESS); GRPC_STREAM_COMPRESSION_DECOMPRESS);
} }
if (!grpc_stream_decompress(s->stream_decompression_ctx, if (!grpc_stream_decompress(s->stream_decompression_ctx,
&s->frame_storage, &s->frame_storage,
&s->unprocessed_incoming_frames_buffer, &s->unprocessed_incoming_frames_buffer, NULL,
NULL, 5, &end_of_context)) { 5, &end_of_context)) {
grpc_slice_buffer_reset_and_unref_internal(exec_ctx, grpc_slice_buffer_reset_and_unref_internal(exec_ctx, &s->frame_storage);
&s->frame_storage);
grpc_slice_buffer_reset_and_unref_internal( grpc_slice_buffer_reset_and_unref_internal(
exec_ctx, &s->unprocessed_incoming_frames_buffer); exec_ctx, &s->unprocessed_incoming_frames_buffer);
s->seen_error = true; s->seen_error = true;
@ -1777,7 +1775,8 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_exec_ctx *exec_ctx,
} }
} }
} }
if (s->read_closed && s->frame_storage.length == 0 && s->unprocessed_incoming_frames_buffer.length == 0 && if (s->read_closed && s->frame_storage.length == 0 &&
s->unprocessed_incoming_frames_buffer.length == 0 &&
(!pending_data || s->seen_error) && (!pending_data || s->seen_error) &&
s->recv_trailing_metadata_finished != NULL) { s->recv_trailing_metadata_finished != NULL) {
grpc_chttp2_incoming_metadata_buffer_publish( grpc_chttp2_incoming_metadata_buffer_publish(

@ -315,8 +315,8 @@ grpc_chttp2_begin_write_result grpc_chttp2_begin_write(
[GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE], [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE],
GPR_MIN(stream_outgoing_window, t->outgoing_window)); GPR_MIN(stream_outgoing_window, t->outgoing_window));
if (max_outgoing > 0) { if (max_outgoing > 0) {
bool is_last_data_frame; bool is_last_data_frame = false;
bool is_last_frame; bool is_last_frame = false;
if (s->stream_compression_send_enabled) { if (s->stream_compression_send_enabled) {
while ((s->flow_controlled_buffer.length > 0 || while ((s->flow_controlled_buffer.length > 0 ||
s->compressed_data_buffer.length > 0) && s->compressed_data_buffer.length > 0) &&

Loading…
Cancel
Save