From 52ab4d3ecd1a1c8f0993b23119e6bbfb89cc39fd Mon Sep 17 00:00:00 2001 From: Ryan Baxter Date: Tue, 14 Feb 2017 14:50:55 -0500 Subject: [PATCH] Adds a check for an empty URI in updateToHttpsIfNeeded. Fixes #1690. --- .../springframework/cloud/netflix/ribbon/RibbonUtils.java | 2 +- .../cloud/netflix/ribbon/RibbonUtilsTests.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/RibbonUtils.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/RibbonUtils.java index fb172027..35e85e32 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/RibbonUtils.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/RibbonUtils.java @@ -71,7 +71,7 @@ public class RibbonUtils { public static URI updateToHttpsIfNeeded(URI uri, IClientConfig config, ServerIntrospector serverIntrospector, Server server) { String scheme = uri.getScheme(); - if (!"https".equals(scheme) && isSecure(config, serverIntrospector, server)) { + if (!"".equals(uri.toString()) && !"https".equals(scheme) && isSecure(config, serverIntrospector, server)) { UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromUri(uri).scheme("https"); if (uri.getRawQuery() != null) { // When building the URI, UriComponentsBuilder verify the allowed characters and does not diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/RibbonUtilsTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/RibbonUtilsTests.java index 92548e7f..f4d63dda 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/RibbonUtilsTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/ribbon/RibbonUtilsTests.java @@ -110,6 +110,14 @@ public class RibbonUtilsTests { "https://foo/%20bar?hello=1%202"))); } + @Test + public void emptyStringUri() throws URISyntaxException { + URI original = new URI(""); + URI updated = updateToHttpsIfNeeded(original, SECURE_CONFIG, SECURE_INTROSPECTOR, SERVER); + Assert.assertThat("URI should be the emptry string", updated, is(new URI( + ""))); + } + static DefaultClientConfigImpl getConfig(boolean value) { DefaultClientConfigImpl config = new DefaultClientConfigImpl(); config.setProperty(CommonClientConfigKey.IsSecure, value);