|
|
@ -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( |
|
|
|