From 686de0f0c1f7537f02528de840a218f2ec0b7bea Mon Sep 17 00:00:00 2001 From: yawkat Date: Sat, 10 Dec 2022 11:52:02 +0100 Subject: [PATCH] Fix findRouteMatch for aws requests micronaut-function-aws-api-proxy requests include the host in getUri. This leads to no match with findAny. This causes the AVAILABLE_HTTP_METHODS to be empty, which causes a test failure with CorsFilter in the aws module. Unfortunately I can't test this using CorsFilterSpec in this repo, because CorsFilterSpec calls findAny directly instead of using the findRouteMatch code path. There is also a PR for refactoring CorsFilterSpec (#8473) but it does not get rid of the mocking either. --- .../src/main/java/io/micronaut/http/server/RouteExecutor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/http-server/src/main/java/io/micronaut/http/server/RouteExecutor.java b/http-server/src/main/java/io/micronaut/http/server/RouteExecutor.java index 6461dd20023..02498d3c209 100644 --- a/http-server/src/main/java/io/micronaut/http/server/RouteExecutor.java +++ b/http-server/src/main/java/io/micronaut/http/server/RouteExecutor.java @@ -174,7 +174,7 @@ UriRouteMatch findRouteMatch(HttpRequest httpRequest) { } if (routeMatch == null && httpRequest.getMethod().equals(HttpMethod.OPTIONS)) { - List> anyUriRoutes = router.findAny(httpRequest.getUri().toString(), httpRequest).toList(); + List> anyUriRoutes = router.findAny(httpRequest.getPath(), httpRequest).toList(); if (!anyUriRoutes.isEmpty()) { setRouteAttributes(httpRequest, anyUriRoutes.get(0)); httpRequest.setAttribute(AVAILABLE_HTTP_METHODS, anyUriRoutes.stream().map(UriRouteMatch::getHttpMethod).toList());