Skip to content
Snippets Groups Projects
Commit d8c466ec authored by yang-g's avatar yang-g
Browse files

Create client side auth context in the auth filter

parent a96ba40f
No related branches found
No related tags found
No related merge requests found
...@@ -56,6 +56,7 @@ typedef struct { ...@@ -56,6 +56,7 @@ typedef struct {
grpc_transport_op op; grpc_transport_op op;
size_t op_md_idx; size_t op_md_idx;
int sent_initial_metadata; int sent_initial_metadata;
gpr_uint8 security_context_set;
grpc_linked_mdelem md_links[MAX_CREDENTIALS_METADATA_COUNT]; grpc_linked_mdelem md_links[MAX_CREDENTIALS_METADATA_COUNT];
} call_data; } call_data;
...@@ -193,8 +194,26 @@ static void auth_start_transport_op(grpc_call_element *elem, ...@@ -193,8 +194,26 @@ static void auth_start_transport_op(grpc_call_element *elem,
channel_data *chand = elem->channel_data; channel_data *chand = elem->channel_data;
grpc_linked_mdelem *l; grpc_linked_mdelem *l;
size_t i; 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;
if (sec_ctx->auth_context == NULL) {
sec_ctx->auth_context =
grpc_auth_context_ref(chand->security_connector->base.auth_context);
} else {
sec_ctx->auth_context->chained =
grpc_auth_context_ref(chand->security_connector->base.auth_context);
}
}
if (op->send_ops && !calld->sent_initial_metadata) { if (op->send_ops && !calld->sent_initial_metadata) {
size_t nops = op->send_ops->nops; size_t nops = op->send_ops->nops;
...@@ -259,6 +278,7 @@ static void init_call_elem(grpc_call_element *elem, ...@@ -259,6 +278,7 @@ static void init_call_elem(grpc_call_element *elem,
calld->host = NULL; calld->host = NULL;
calld->method = NULL; calld->method = NULL;
calld->sent_initial_metadata = 0; calld->sent_initial_metadata = 0;
calld->security_context_set = 0;
GPR_ASSERT(!initial_op || !initial_op->send_ops); GPR_ASSERT(!initial_op || !initial_op->send_ops);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment