From 8a3fdb4b2122ba0fa990fd44ad60eff70c873619 Mon Sep 17 00:00:00 2001 From: Pranav K Date: Sat, 11 May 2019 06:22:19 -0700 Subject: [PATCH] Changes per PR comments --- .../CORS/src/Infrastructure/CorsMiddleware.cs | 15 +++++---------- .../CORS/src/Infrastructure/CorsOptions.cs | 4 +++- .../Infrastructure/DefaultCorsPolicyProvider.cs | 3 ++- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/Middleware/CORS/src/Infrastructure/CorsMiddleware.cs b/src/Middleware/CORS/src/Infrastructure/CorsMiddleware.cs index a8984f472c..d376370cc6 100644 --- a/src/Middleware/CORS/src/Infrastructure/CorsMiddleware.cs +++ b/src/Middleware/CORS/src/Infrastructure/CorsMiddleware.cs @@ -125,11 +125,6 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure return _next(context); } - return InvokeCore(context, corsPolicyProvider); - } - - private Task InvokeCore(HttpContext context, ICorsPolicyProvider corsPolicyProvider) - { // CORS policy resolution rules: // // 1. If there is an endpoint with IDisableCorsAttribute then CORS is not run @@ -191,12 +186,12 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure } return EvaluateAndApplyPolicy(context, corsPolicy); - } - private async Task InvokeCoreAwaited(HttpContext context, Task policyTask) - { - var corsPolicy = await policyTask; - await EvaluateAndApplyPolicy(context, corsPolicy); + async Task InvokeCoreAwaited(HttpContext context, Task policyTask) + { + var corsPolicy = await policyTask; + await EvaluateAndApplyPolicy(context, corsPolicy); + } } private Task EvaluateAndApplyPolicy(HttpContext context, CorsPolicy corsPolicy) diff --git a/src/Middleware/CORS/src/Infrastructure/CorsOptions.cs b/src/Middleware/CORS/src/Infrastructure/CorsOptions.cs index 5562e47cfd..df32568b07 100644 --- a/src/Middleware/CORS/src/Infrastructure/CorsOptions.cs +++ b/src/Middleware/CORS/src/Infrastructure/CorsOptions.cs @@ -14,8 +14,10 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure { private string _defaultPolicyName = "__DefaultCorsPolicy"; + // DefaultCorsPolicyProvider returns a Task. We'll cache the value to be returned alongside + // the actual policy instance to have a separate lookup. internal IDictionary policyTask)> PolicyMap { get; } - = new Dictionary)>(); + = new Dictionary)>(StringComparer.Ordinal); public string DefaultPolicyName { diff --git a/src/Middleware/CORS/src/Infrastructure/DefaultCorsPolicyProvider.cs b/src/Middleware/CORS/src/Infrastructure/DefaultCorsPolicyProvider.cs index 32c3222ef0..e9e5ca9154 100644 --- a/src/Middleware/CORS/src/Infrastructure/DefaultCorsPolicyProvider.cs +++ b/src/Middleware/CORS/src/Infrastructure/DefaultCorsPolicyProvider.cs @@ -11,6 +11,7 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure /// public class DefaultCorsPolicyProvider : ICorsPolicyProvider { + private static readonly Task NullResult = Task.FromResult(null); private readonly CorsOptions _options; /// @@ -36,7 +37,7 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure return result.policyTask; } - return Task.FromResult(null); + return NullResult; } } }