aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/cpp/server
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2017-01-23 07:48:19 -0800
committerGravatar Craig Tiller <ctiller@google.com>2017-01-23 07:48:19 -0800
commitc7342a01bb069fcff6df0e22f6c2a403010998a1 (patch)
treed938c40ce9d880c13be1e928c1e3bc5de65ca1b9 /src/cpp/server
parenta60b31d0a4f24ec061cc3dd9129f93a0319f1429 (diff)
parent5e01e2ac977655aa074faf7fde0a74298f5e4c55 (diff)
Merge branch 'revert-8842-metadata_filter' of github.com:grpc/grpc into rollfwd
Diffstat (limited to 'src/cpp/server')
-rw-r--r--src/cpp/server/dynamic_thread_pool.cc5
-rw-r--r--src/cpp/server/secure_server_credentials.cc19
-rw-r--r--src/cpp/server/server_cc.cc26
-rw-r--r--src/cpp/server/server_context.cc7
4 files changed, 31 insertions, 26 deletions
diff --git a/src/cpp/server/dynamic_thread_pool.cc b/src/cpp/server/dynamic_thread_pool.cc
index afb5beaade..1fdc2edb25 100644
--- a/src/cpp/server/dynamic_thread_pool.cc
+++ b/src/cpp/server/dynamic_thread_pool.cc
@@ -31,15 +31,12 @@
*
*/
-#include "src/cpp/server/dynamic_thread_pool.h"
-
#include <mutex>
#include <thread>
-#include <grpc/support/log.h>
+#include "src/cpp/server/dynamic_thread_pool.h"
namespace grpc {
-
DynamicThreadPool::DynamicThread::DynamicThread(DynamicThreadPool* pool)
: pool_(pool),
thd_(new std::thread(&DynamicThreadPool::DynamicThread::ThreadFunc,
diff --git a/src/cpp/server/secure_server_credentials.cc b/src/cpp/server/secure_server_credentials.cc
index 10f662c77d..33bdc2a1f4 100644
--- a/src/cpp/server/secure_server_credentials.cc
+++ b/src/cpp/server/secure_server_credentials.cc
@@ -35,12 +35,11 @@
#include <map>
#include <memory>
-#include <grpc++/impl/codegen/slice.h>
-#include <grpc++/security/auth_metadata_processor.h>
-
#include "src/cpp/common/secure_auth_context.h"
#include "src/cpp/server/secure_server_credentials.h"
+#include <grpc++/security/auth_metadata_processor.h>
+
namespace grpc {
void AuthMetadataProcessorAyncWrapper::Destroy(void* wrapper) {
@@ -72,8 +71,8 @@ void AuthMetadataProcessorAyncWrapper::InvokeProcessor(
grpc_process_auth_metadata_done_cb cb, void* user_data) {
AuthMetadataProcessor::InputMetadata metadata;
for (size_t i = 0; i < num_md; i++) {
- metadata.insert(std::make_pair(StringRefFromSlice(&md[i].key),
- StringRefFromSlice(&md[i].value)));
+ metadata.insert(std::make_pair(
+ md[i].key, grpc::string_ref(md[i].value, md[i].value_length)));
}
SecureAuthContext context(ctx, false);
AuthMetadataProcessor::OutputMetadata consumed_metadata;
@@ -86,8 +85,9 @@ void AuthMetadataProcessorAyncWrapper::InvokeProcessor(
for (auto it = consumed_metadata.begin(); it != consumed_metadata.end();
++it) {
grpc_metadata md_entry;
- md_entry.key = SliceReferencingString(it->first);
- md_entry.value = SliceReferencingString(it->second);
+ md_entry.key = it->first.c_str();
+ md_entry.value = it->second.data();
+ md_entry.value_length = it->second.size();
md_entry.flags = 0;
consumed_md.push_back(md_entry);
}
@@ -95,8 +95,9 @@ void AuthMetadataProcessorAyncWrapper::InvokeProcessor(
for (auto it = response_metadata.begin(); it != response_metadata.end();
++it) {
grpc_metadata md_entry;
- md_entry.key = SliceReferencingString(it->first);
- md_entry.value = SliceReferencingString(it->second);
+ md_entry.key = it->first.c_str();
+ md_entry.value = it->second.data();
+ md_entry.value_length = it->second.size();
md_entry.flags = 0;
response_md.push_back(md_entry);
}
diff --git a/src/cpp/server/server_cc.cc b/src/cpp/server/server_cc.cc
index dcc56eecbc..817d85a81c 100644
--- a/src/cpp/server/server_cc.cc
+++ b/src/cpp/server/server_cc.cc
@@ -576,6 +576,7 @@ ServerInterface::BaseAsyncRequest::BaseAsyncRequest(
delete_on_finalize_(delete_on_finalize),
call_(nullptr) {
call_cq_->RegisterAvalanching(); // This op will trigger more ops
+ memset(&initial_metadata_array_, 0, sizeof(initial_metadata_array_));
}
ServerInterface::BaseAsyncRequest::~BaseAsyncRequest() {
@@ -585,8 +586,16 @@ ServerInterface::BaseAsyncRequest::~BaseAsyncRequest() {
bool ServerInterface::BaseAsyncRequest::FinalizeResult(void** tag,
bool* status) {
if (*status) {
- context_->client_metadata_.FillMap();
+ for (size_t i = 0; i < initial_metadata_array_.count; i++) {
+ context_->client_metadata_.insert(
+ std::pair<grpc::string_ref, grpc::string_ref>(
+ initial_metadata_array_.metadata[i].key,
+ grpc::string_ref(
+ initial_metadata_array_.metadata[i].value,
+ initial_metadata_array_.metadata[i].value_length)));
+ }
}
+ grpc_metadata_array_destroy(&initial_metadata_array_);
context_->set_call(call_);
context_->cq_ = call_cq_;
Call call(call_, server_, call_cq_, server_->max_receive_message_size());
@@ -612,8 +621,8 @@ void ServerInterface::RegisteredAsyncRequest::IssueRequest(
ServerCompletionQueue* notification_cq) {
grpc_server_request_registered_call(
server_->server(), registered_method, &call_, &context_->deadline_,
- context_->client_metadata_.arr(), payload, call_cq_->cq(),
- notification_cq->cq(), this);
+ &initial_metadata_array_, payload, call_cq_->cq(), notification_cq->cq(),
+ this);
}
ServerInterface::GenericAsyncRequest::GenericAsyncRequest(
@@ -626,7 +635,7 @@ ServerInterface::GenericAsyncRequest::GenericAsyncRequest(
GPR_ASSERT(notification_cq);
GPR_ASSERT(call_cq);
grpc_server_request_call(server->server(), &call_, &call_details_,
- context->client_metadata_.arr(), call_cq->cq(),
+ &initial_metadata_array_, call_cq->cq(),
notification_cq->cq(), this);
}
@@ -635,12 +644,11 @@ bool ServerInterface::GenericAsyncRequest::FinalizeResult(void** tag,
// TODO(yangg) remove the copy here.
if (*status) {
static_cast<GenericServerContext*>(context_)->method_ =
- StringFromCopiedSlice(call_details_.method);
- static_cast<GenericServerContext*>(context_)->host_ =
- StringFromCopiedSlice(call_details_.host);
+ call_details_.method;
+ static_cast<GenericServerContext*>(context_)->host_ = call_details_.host;
}
- grpc_slice_unref(call_details_.method);
- grpc_slice_unref(call_details_.host);
+ gpr_free(call_details_.method);
+ gpr_free(call_details_.host);
return BaseAsyncRequest::FinalizeResult(tag, status);
}
diff --git a/src/cpp/server/server_context.cc b/src/cpp/server/server_context.cc
index a7aaa25572..a66ec4ac84 100644
--- a/src/cpp/server/server_context.cc
+++ b/src/cpp/server/server_context.cc
@@ -144,10 +144,9 @@ ServerContext::ServerContext(gpr_timespec deadline, grpc_metadata* metadata,
sent_initial_metadata_(false),
compression_level_set_(false) {
for (size_t i = 0; i < metadata_count; i++) {
- client_metadata_.map()->insert(
- std::pair<grpc::string_ref, grpc::string_ref>(
- StringRefFromSlice(&metadata[i].key),
- StringRefFromSlice(&metadata[i].value)));
+ client_metadata_.insert(std::pair<grpc::string_ref, grpc::string_ref>(
+ metadata[i].key,
+ grpc::string_ref(metadata[i].value, metadata[i].value_length)));
}
}