diff options
author | 2015-07-15 14:07:18 -0700 | |
---|---|---|
committer | 2015-07-15 14:07:18 -0700 | |
commit | e0d581b6ad1023635598d9de95bd951cd04b0354 (patch) | |
tree | a0601b1315a1dc7b499998a95adba61322825f3c /src/core/security/client_auth_filter.c | |
parent | 658b6087cc07f8706d270ee0e31f28bbf732ec3d (diff) | |
parent | 3e5d61670e23b040ed47b2df1e4c87ee2cfec4aa (diff) |
Merge branch 'master' of github.com:grpc/grpc into decompression
# Conflicts:
# Makefile
# include/grpc++/client_context.h
# include/grpc++/server_context.h
# src/cpp/client/client_context.cc
# src/cpp/server/server_context.cc
# vsprojects/Grpc.mak
Diffstat (limited to 'src/core/security/client_auth_filter.c')
-rw-r--r-- | src/core/security/client_auth_filter.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/core/security/client_auth_filter.c b/src/core/security/client_auth_filter.c index 16f2abe04b..9e49a807f1 100644 --- a/src/core/security/client_auth_filter.c +++ b/src/core/security/client_auth_filter.c @@ -61,6 +61,7 @@ typedef struct { grpc_transport_stream_op op; size_t op_md_idx; int sent_initial_metadata; + gpr_uint8 security_context_set; grpc_linked_mdelem md_links[MAX_CREDENTIALS_METADATA_COUNT]; } call_data; @@ -199,8 +200,22 @@ static void auth_start_transport_op(grpc_call_element *elem, channel_data *chand = elem->channel_data; grpc_linked_mdelem *l; size_t i; + grpc_client_security_context* sec_ctx = NULL; - /* TODO(jboeuf): write the call auth context. */ + if (calld->security_context_set == 0) { + calld->security_context_set = 1; + GPR_ASSERT(op->context); + if (op->context[GRPC_CONTEXT_SECURITY].value == NULL) { + op->context[GRPC_CONTEXT_SECURITY].value = + grpc_client_security_context_create(); + op->context[GRPC_CONTEXT_SECURITY].destroy = + grpc_client_security_context_destroy; + } + sec_ctx = op->context[GRPC_CONTEXT_SECURITY].value; + GRPC_AUTH_CONTEXT_UNREF(sec_ctx->auth_context, "client auth filter"); + sec_ctx->auth_context = GRPC_AUTH_CONTEXT_REF( + chand->security_connector->base.auth_context, "client_auth_filter"); + } if (op->bind_pollset) { calld->pollset = op->bind_pollset; @@ -263,6 +278,7 @@ static void init_call_elem(grpc_call_element *elem, calld->method = NULL; calld->pollset = NULL; calld->sent_initial_metadata = 0; + calld->security_context_set = 0; GPR_ASSERT(!initial_op || !initial_op->send_ops); } |