diff options
author | Yuchen Zeng <zyc@google.com> | 2017-03-22 12:08:38 -0700 |
---|---|---|
committer | Yuchen Zeng <zyc@google.com> | 2017-03-22 17:38:46 -0700 |
commit | f5b6b5b70234e406e2a6b2ddf031165b47dd5663 (patch) | |
tree | 5ee43d751efb79cbead30404b0c151a53428dbc9 /src/cpp/common | |
parent | 8e2713ec31aeb48adfc6d02bc110e712b82629c0 (diff) |
Replace existing string in SetUserAgentPrefix
Diffstat (limited to 'src/cpp/common')
-rw-r--r-- | src/cpp/common/channel_arguments.cc | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/cpp/common/channel_arguments.cc b/src/cpp/common/channel_arguments.cc index eddcacc332..53e4a9c39c 100644 --- a/src/cpp/common/channel_arguments.cc +++ b/src/cpp/common/channel_arguments.cc @@ -133,14 +133,19 @@ void ChannelArguments::SetUserAgentPrefix( return; } bool replaced = false; + auto strings_it = strings_.begin(); for (auto it = args_.begin(); it != args_.end(); ++it) { const grpc_arg& arg = *it; - if (arg.type == GRPC_ARG_STRING && - grpc::string(arg.key) == GRPC_ARG_PRIMARY_USER_AGENT_STRING) { - strings_.push_back(user_agent_prefix + " " + arg.value.string); - it->value.string = const_cast<char*>(strings_.back().c_str()); - replaced = true; - break; + ++strings_it; + if (arg.type == GRPC_ARG_STRING) { + if (grpc::string(arg.key) == GRPC_ARG_PRIMARY_USER_AGENT_STRING) { + GPR_ASSERT(arg.value.string == strings_it->c_str()); + *(strings_it) = user_agent_prefix + " " + arg.value.string; + it->value.string = const_cast<char*>(strings_it->c_str()); + replaced = true; + break; + } + ++strings_it; } } if (!replaced) { |