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 {
grpc_transport_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;
......@@ -193,8 +194,26 @@ 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;
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) {
size_t nops = op->send_ops->nops;
......@@ -259,6 +278,7 @@ static void init_call_elem(grpc_call_element *elem,
calld->host = NULL;
calld->method = NULL;
calld->sent_initial_metadata = 0;
calld->security_context_set = 0;
GPR_ASSERT(!initial_op || !initial_op->send_ops);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment