diff options
author | yang-g <yangg@google.com> | 2017-10-10 16:55:13 -0700 |
---|---|---|
committer | yang-g <yangg@google.com> | 2017-10-16 17:57:46 -0700 |
commit | fd42ceb1ff3d0a80487ee81d86afbde97b19fe42 (patch) | |
tree | f96b13a5a96c4d68bec017013c681f277a0f8697 /src/core/lib | |
parent | 6bf5f833efe2cb9e2ecc14358dd9699cd5d05263 (diff) |
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. */ |