diff options
author | 2016-10-26 14:09:52 -0700 | |
---|---|---|
committer | 2016-10-28 12:20:53 -0700 | |
commit | 61f0973e55c40146e11492ff7b6de39426f7e3ca (patch) | |
tree | b18a2dc8cffe70f319c93cd3e24db71743c59b24 /src/core/lib/channel/compress_filter.c | |
parent | d4a5971ae89e124f67781a6fda57b36af3d7fb54 (diff) |
Skip compress filter if byte_buffer is compressed
Diffstat (limited to 'src/core/lib/channel/compress_filter.c')
-rw-r--r-- | src/core/lib/channel/compress_filter.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/core/lib/channel/compress_filter.c b/src/core/lib/channel/compress_filter.c index 0981d59f63..23b7dfb8fd 100644 --- a/src/core/lib/channel/compress_filter.c +++ b/src/core/lib/channel/compress_filter.c @@ -111,9 +111,13 @@ static grpc_mdelem *compression_md_filter(void *user_data, grpc_mdelem *md) { return md; } -static int skip_compression(grpc_call_element *elem) { +static int skip_compression(grpc_call_element *elem, uint32_t flags) { call_data *calld = elem->call_data; channel_data *channeld = elem->channel_data; + + if (flags & (GRPC_WRITE_NO_COMPRESS | GRPC_WRITE_INTERNAL_COMPRESS)) { + return 1; + } if (calld->has_compression_algorithm) { if (calld->compression_algorithm == GRPC_COMPRESS_NONE) { return 1; @@ -241,8 +245,8 @@ static void compress_start_transport_stream_op(grpc_exec_ctx *exec_ctx, if (op->send_initial_metadata) { process_send_initial_metadata(elem, op->send_initial_metadata); } - if (op->send_message != NULL && !skip_compression(elem) && - 0 == (op->send_message->flags & GRPC_WRITE_NO_COMPRESS)) { + if (op->send_message != NULL && + !skip_compression(elem, op->send_message->flags)) { calld->send_op = op; calld->send_length = op->send_message->length; calld->send_flags = op->send_message->flags; |