diff options
author | Yang Gao <yangg@google.com> | 2017-10-17 10:00:32 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-17 10:00:32 -0700 |
commit | 4345ea686465b8048ddabeac5470a319c6db6188 (patch) | |
tree | 3b6b6e5abcdb3ecef4ac7d3d68eb9261f93ffd73 /src/core/lib | |
parent | 494a778ec6baf78413ca8a7052ca93d22bd20e73 (diff) | |
parent | c010d1d18af34df5fb2a1269f47e0487ff6f8bc6 (diff) |
Merge pull request #12946 from yang-g/hpack
Use key in dynamic table if available
Diffstat (limited to 'src/core/lib')
-rw-r--r-- | src/core/lib/transport/metadata.cc | 7 | ||||
-rw-r--r-- | src/core/lib/transport/metadata.h | 3 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/core/lib/transport/metadata.cc b/src/core/lib/transport/metadata.cc index 5455b2481b..2392f26c0b 100644 --- a/src/core/lib/transport/metadata.cc +++ b/src/core/lib/transport/metadata.cc @@ -352,11 +352,14 @@ static size_t get_base64_encoded_size(size_t raw_length) { return raw_length / 3 * 4 + tail_xtra[raw_length % 3]; } -size_t grpc_mdelem_get_size_in_hpack_table(grpc_mdelem elem) { +size_t grpc_mdelem_get_size_in_hpack_table(grpc_mdelem elem, + bool use_true_binary_metadata) { size_t overhead_and_key = 32 + GRPC_SLICE_LENGTH(GRPC_MDKEY(elem)); size_t value_len = GRPC_SLICE_LENGTH(GRPC_MDVALUE(elem)); if (grpc_is_binary_header(GRPC_MDKEY(elem))) { - return overhead_and_key + get_base64_encoded_size(value_len); + return overhead_and_key + (use_true_binary_metadata + ? value_len + 1 + : get_base64_encoded_size(value_len)); } else { return overhead_and_key + value_len; } diff --git a/src/core/lib/transport/metadata.h b/src/core/lib/transport/metadata.h index 9f82225dc3..3f1032ab8a 100644 --- a/src/core/lib/transport/metadata.h +++ b/src/core/lib/transport/metadata.h @@ -132,7 +132,8 @@ grpc_mdelem grpc_mdelem_create( bool grpc_mdelem_eq(grpc_mdelem a, grpc_mdelem b); -size_t grpc_mdelem_get_size_in_hpack_table(grpc_mdelem elem); +size_t grpc_mdelem_get_size_in_hpack_table(grpc_mdelem elem, + bool use_true_binary_metadata); /* Mutator and accessor for grpc_mdelem user data. The destructor function is used as a type tag and is checked during user_data fetch. */ |