Got the core test passing.
diff --git a/src/core/security/credentials.c b/src/core/security/credentials.c
index a1fa457..ef1f406 100644
--- a/src/core/security/credentials.c
+++ b/src/core/security/credentials.c
@@ -116,7 +116,7 @@
grpc_call_credentials_unref(creds);
}
-void grpc_credentials_get_request_metadata(
+void grpc_call_credentials_get_request_metadata(
grpc_exec_ctx *exec_ctx, grpc_call_credentials *creds, grpc_pollset *pollset,
const char *service_url, grpc_credentials_metadata_cb cb, void *user_data) {
if (creds == NULL || creds->vtable->get_request_metadata == NULL) {
@@ -980,9 +980,9 @@
if (ctx->creds_index < ctx->composite_creds->inner.num_creds) {
grpc_call_credentials *inner_creds =
ctx->composite_creds->inner.creds_array[ctx->creds_index++];
- grpc_credentials_get_request_metadata(exec_ctx, inner_creds, ctx->pollset,
- ctx->service_url,
- composite_metadata_cb, ctx);
+ grpc_call_credentials_get_request_metadata(exec_ctx, inner_creds,
+ ctx->pollset, ctx->service_url,
+ composite_metadata_cb, ctx);
return;
}
@@ -1006,7 +1006,7 @@
ctx->composite_creds = c;
ctx->pollset = pollset;
ctx->md_elems = grpc_credentials_md_store_create(c->inner.num_creds);
- grpc_credentials_get_request_metadata(
+ grpc_call_credentials_get_request_metadata(
exec_ctx, c->inner.creds_array[ctx->creds_index++], pollset, service_url,
composite_metadata_cb, ctx);
}
@@ -1092,6 +1092,24 @@
return NULL;
}
+grpc_channel_credentials *grpc_composite_channel_credentials_create(
+ grpc_channel_credentials *channel_creds, grpc_call_credentials *call_creds,
+ void *reserved) {
+ GPR_ASSERT(reserved == NULL);
+ if (channel_creds == NULL) return NULL;
+ if (channel_creds->call_creds == NULL) {
+ channel_creds->call_creds = grpc_call_credentials_ref(call_creds);
+ } else if (call_creds != NULL) {
+ grpc_call_credentials *composite_creds =
+ grpc_composite_call_credentials_create(channel_creds->call_creds,
+ call_creds, NULL);
+ if (composite_creds == NULL) return NULL;
+ grpc_call_credentials_unref(channel_creds->call_creds);
+ channel_creds->call_creds = composite_creds;
+ }
+ return grpc_channel_credentials_ref(channel_creds);
+}
+
/* -- IAM credentials. -- */
static void iam_destruct(grpc_call_credentials *creds) {