diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncServerBootstrap.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncServerBootstrap.java index 17ec7608a..f25b8374a 100644 --- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncServerBootstrap.java +++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/AsyncServerBootstrap.java @@ -95,6 +95,7 @@ public class AsyncServerBootstrap { private IOSessionListener sessionListener; private Http1StreamListener streamListener; private IOReactorMetricsListener threadPoolListener; + private boolean localAuthorityResolver; private AsyncServerBootstrap() { this.routeEntries = new ArrayList<>(); @@ -435,6 +436,16 @@ public final AsyncServerBootstrap addFilterLast(final String name, final AsyncFi return this; } + /** + * Create {@link RequestRouter} with LOCAL_AUTHORITY_RESOLVER (default: IGNORE_PORT_AUTHORITY_RESOLVER). + * + * @since 5.4 + */ + public final AsyncServerBootstrap useLocalAuthorityResolver(final boolean localAuthorityResolver) { + this.localAuthorityResolver = localAuthorityResolver; + return this; + } + public HttpAsyncServer create() { final String actualCanonicalHostName = canonicalHostName != null ? canonicalHostName : InetAddressUtils.getCanonicalLocalHostName(); final HttpRequestMapper> requestRouterCopy; @@ -451,9 +462,9 @@ public HttpAsyncServer create() { requestRouterCopy = requestRouter; } else { requestRouterCopy = RequestRouter.create( - new URIAuthority(actualCanonicalHostName), + this.localAuthorityResolver ? RequestRouter.LOCAL_AUTHORITY : new URIAuthority(actualCanonicalHostName), UriPatternType.URI_PATTERN, routeEntries, - RequestRouter.IGNORE_PORT_AUTHORITY_RESOLVER, + this.localAuthorityResolver ? RequestRouter.LOCAL_AUTHORITY_RESOLVER : RequestRouter.IGNORE_PORT_AUTHORITY_RESOLVER, requestRouter); } } diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/ServerBootstrap.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/ServerBootstrap.java index da887dbf1..2541469d0 100644 --- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/ServerBootstrap.java +++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/bootstrap/ServerBootstrap.java @@ -98,6 +98,7 @@ public class ServerBootstrap { private HttpConnectionFactory connectionFactory; private ExceptionListener exceptionListener; private Http1StreamListener streamListener; + private boolean localAuthorityResolver; private ServerBootstrap() { this.routeEntries = new ArrayList<>(); @@ -346,6 +347,16 @@ public final ServerBootstrap addFilterLast(final String name, final HttpFilterHa return this; } + /** + * Create {@link RequestRouter} with LOCAL_AUTHORITY_RESOLVER (default: IGNORE_PORT_AUTHORITY_RESOLVER). + * + * @since 5.4 + */ + public final ServerBootstrap useLocalAuthorityResolver(final boolean localAuthorityResolver) { + this.localAuthorityResolver = localAuthorityResolver; + return this; + } + public HttpServer create() { final String actualCanonicalHostName = canonicalHostName != null ? canonicalHostName : InetAddressUtils.getCanonicalLocalHostName(); final HttpRequestMapper requestRouterCopy; @@ -362,10 +373,10 @@ public HttpServer create() { requestRouterCopy = requestRouter; } else { requestRouterCopy = RequestRouter.create( - new URIAuthority(actualCanonicalHostName), + this.localAuthorityResolver ? RequestRouter.LOCAL_AUTHORITY : new URIAuthority(actualCanonicalHostName), UriPatternType.URI_PATTERN, routeEntries, - RequestRouter.IGNORE_PORT_AUTHORITY_RESOLVER, + this.localAuthorityResolver ? RequestRouter.LOCAL_AUTHORITY_RESOLVER : RequestRouter.IGNORE_PORT_AUTHORITY_RESOLVER, requestRouter); } }