diff options
author | 2017-09-05 20:39:28 -0700 | |
---|---|---|
committer | 2017-09-06 14:12:28 -0700 | |
commit | 27670c81a9beec3365ab5b373c707a847c0df503 (patch) | |
tree | 1eac6330dfbc8e66261c29313da79877eb9cab20 /src/csharp/Grpc.Core/Internal/NativeMetadataCredentialsPlugin.cs | |
parent | 8cc7e6700fedd953206a9e33c7b565d853fc9151 (diff) |
make a guarantee that c# auth callbacks are async to c-core
Diffstat (limited to 'src/csharp/Grpc.Core/Internal/NativeMetadataCredentialsPlugin.cs')
-rw-r--r-- | src/csharp/Grpc.Core/Internal/NativeMetadataCredentialsPlugin.cs | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/src/csharp/Grpc.Core/Internal/NativeMetadataCredentialsPlugin.cs b/src/csharp/Grpc.Core/Internal/NativeMetadataCredentialsPlugin.cs index b56bdbb23f..a8cb357181 100644 --- a/src/csharp/Grpc.Core/Internal/NativeMetadataCredentialsPlugin.cs +++ b/src/csharp/Grpc.Core/Internal/NativeMetadataCredentialsPlugin.cs @@ -61,12 +61,9 @@ namespace Grpc.Core.Internal try { - var context = new AuthInterceptorContext(Marshal.PtrToStringAnsi(serviceUrlPtr), - Marshal.PtrToStringAnsi(methodNamePtr)); - // Don't await, we are in a native callback and need to return. - #pragma warning disable 4014 - GetMetadataAsync(context, callbackPtr, userDataPtr); - #pragma warning restore 4014 + var context = new AuthInterceptorContext(Marshal.PtrToStringAnsi(serviceUrlPtr), Marshal.PtrToStringAnsi(methodNamePtr)); + // Make a guarantee that credentials_notify_from_plugin is invoked async to be compliant with c-core API. + ThreadPool.QueueUserWorkItem(async (stateInfo) => await GetMetadataAsync(context, callbackPtr, userDataPtr)); } catch (Exception e) { |