From 5847454aa47644c3633a3b1dc121a593e413640e Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Wed, 15 Feb 2023 10:26:49 +0000 Subject: [PATCH] Prefer local hostAddress in ReactorServerHttpRequest Closes gh-28601 --- .../reactive/ReactorNetty2ServerHttpRequest.java | 16 +++++++++------- .../reactive/ReactorServerHttpRequest.java | 16 +++++++++------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/ReactorNetty2ServerHttpRequest.java b/spring-web/src/main/java/org/springframework/http/server/reactive/ReactorNetty2ServerHttpRequest.java index 43bc99122b95..ba76338d6040 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/ReactorNetty2ServerHttpRequest.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/ReactorNetty2ServerHttpRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -80,6 +80,12 @@ private static URI initUri(HttpServerRequest request) throws URISyntaxException private static URI resolveBaseUrl(HttpServerRequest request) throws URISyntaxException { String scheme = getScheme(request); + + InetSocketAddress hostAddress = request.hostAddress(); + if (hostAddress != null) { + return new URI(scheme, null, hostAddress.getHostString(), hostAddress.getPort(), null, null, null); + } + CharSequence charSequence = request.requestHeaders().get(HttpHeaderNames.HOST); if (charSequence != null) { String header = charSequence.toString(); @@ -103,12 +109,8 @@ private static URI resolveBaseUrl(HttpServerRequest request) throws URISyntaxExc return new URI(scheme, header, null, null); } } - else { - InetSocketAddress localAddress = request.hostAddress(); - Assert.state(localAddress != null, "No host address available"); - return new URI(scheme, null, localAddress.getHostString(), - localAddress.getPort(), null, null, null); - } + + throw new IllegalStateException("Neither local hostAddress nor HOST header available"); } private static String getScheme(HttpServerRequest request) { diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/ReactorServerHttpRequest.java b/spring-web/src/main/java/org/springframework/http/server/reactive/ReactorServerHttpRequest.java index bc1981af40dc..594fe4eaf9ed 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/ReactorServerHttpRequest.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/ReactorServerHttpRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -79,6 +79,12 @@ private static URI initUri(HttpServerRequest request) throws URISyntaxException private static URI resolveBaseUrl(HttpServerRequest request) throws URISyntaxException { String scheme = getScheme(request); + + InetSocketAddress hostAddress = request.hostAddress(); + if (hostAddress != null) { + return new URI(scheme, null, hostAddress.getHostString(), hostAddress.getPort(), null, null, null); + } + String header = request.requestHeaders().get(HttpHeaderNames.HOST); if (header != null) { final int portIndex; @@ -101,12 +107,8 @@ private static URI resolveBaseUrl(HttpServerRequest request) throws URISyntaxExc return new URI(scheme, header, null, null); } } - else { - InetSocketAddress localAddress = request.hostAddress(); - Assert.state(localAddress != null, "No host address available"); - return new URI(scheme, null, localAddress.getHostString(), - localAddress.getPort(), null, null, null); - } + + throw new IllegalStateException("Neither local hostAddress nor HOST header available"); } private static String getScheme(HttpServerRequest request) {