From d1cf36cdb70819443d5d22a11e3058aae7f7ce63 Mon Sep 17 00:00:00 2001
From: Stanley Cheung <stanleycheung@google.com>
Date: Fri, 11 Dec 2015 11:09:57 -0800
Subject: [PATCH] pass auth metadata context to user callback

---
 src/php/ext/grpc/call_credentials.c              | 4 +++-
 src/php/tests/interop/interop_client.php         | 4 +++-
 src/php/tests/unit_tests/CallCredentialsTest.php | 5 +++--
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/php/ext/grpc/call_credentials.c b/src/php/ext/grpc/call_credentials.c
index 06c6fc0566..285c4e7c85 100644
--- a/src/php/ext/grpc/call_credentials.c
+++ b/src/php/ext/grpc/call_credentials.c
@@ -183,7 +183,9 @@ void plugin_get_metadata(void *ptr, grpc_auth_metadata_context context,
   zval *arg;
   zval *retval;
   MAKE_STD_ZVAL(arg);
-  ZVAL_STRING(arg, context.service_url, 1);
+  object_init(arg);
+  add_property_string(arg, "service_url", context.service_url, true);
+  add_property_string(arg, "method_name", context.method_name, true);
   params[0] = &arg;
   state->fci->param_count = 1;
   state->fci->params = params;
diff --git a/src/php/tests/interop/interop_client.php b/src/php/tests/interop/interop_client.php
index 45aa8bfc6b..ee604a387c 100755
--- a/src/php/tests/interop/interop_client.php
+++ b/src/php/tests/interop/interop_client.php
@@ -191,8 +191,10 @@ function oauth2AuthToken($stub, $args)
              'invalid email returned');
 }
 
-function updateAuthMetadataCallback($authUri)
+function updateAuthMetadataCallback($context)
 {
+    $authUri = $context->service_url;
+    $methodName = $context->method_name;
     $auth_credentials = ApplicationDefaultCredentials::getCredentials();
 
     return $auth_credentials->updateMetadata($metadata = [], $authUri);
diff --git a/src/php/tests/unit_tests/CallCredentialsTest.php b/src/php/tests/unit_tests/CallCredentialsTest.php
index aac21d4c49..0918412781 100644
--- a/src/php/tests/unit_tests/CallCredentialsTest.php
+++ b/src/php/tests/unit_tests/CallCredentialsTest.php
@@ -69,9 +69,10 @@ class CallCredentialsTest extends PHPUnit_Framework_TestCase
         unset($this->server);
     }
 
-    public function callbackFunc($service_url)
+    public function callbackFunc($context)
     {
-        $this->assertTrue(is_string($service_url));
+        $this->assertTrue(is_string($context->service_url));
+        $this->assertTrue(is_string($context->method_name));
 
         return ['k1' => ['v1'], 'k2' => ['v2']];
     }
-- 
GitLab