From 680f549abb87cc79b0d09a07add1a666dd2d0387 Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Thu, 24 Oct 2013 12:36:43 +0200 Subject: [PATCH] SONAR-4741 Log clear message when HTTP and HTTPS ports are the same --- .../org/sonar/application/Connectors.java | 23 +++++++++++++------ .../org/sonar/application/ConnectorsTest.java | 13 +++++++++++ 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/sonar-application/src/main/java/org/sonar/application/Connectors.java b/sonar-application/src/main/java/org/sonar/application/Connectors.java index 0a4bcd8c3c9..617b7d6a428 100644 --- a/sonar-application/src/main/java/org/sonar/application/Connectors.java +++ b/sonar-application/src/main/java/org/sonar/application/Connectors.java @@ -24,10 +24,7 @@ import org.apache.catalina.startup.Tomcat; import org.slf4j.LoggerFactory; import javax.annotation.Nullable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import java.util.*; class Connectors { @@ -44,9 +41,7 @@ class Connectors { connectors.addAll(Arrays.asList(newHttpConnector(props), newHttpsConnector(props))); connectors.removeAll(Collections.singleton(null)); - if (connectors.isEmpty()) { - throw new IllegalStateException("HTTP connectors are disabled"); - } + verify(connectors); tomcat.setConnector(connectors.get(0)); for (Connector connector : connectors) { @@ -54,6 +49,20 @@ class Connectors { } } + private static void verify(List connectors) { + if (connectors.isEmpty()) { + throw new IllegalStateException("HTTP connectors are disabled"); + } + Set ports = new HashSet(); + for (Connector connector : connectors) { + int port = connector.getPort(); + if (ports.contains(port)) { + throw new IllegalStateException(String.format("HTTP and HTTPS must not use the same port %d", port)); + } + ports.add(port); + } + } + private static void configureShutdown(Tomcat tomcat, Props props) { String shutdownToken = props.of("sonar.web.shutdown.token"); Integer shutdownPort = props.intOf("sonar.web.shutdown.port"); diff --git a/sonar-application/src/test/java/org/sonar/application/ConnectorsTest.java b/sonar-application/src/test/java/org/sonar/application/ConnectorsTest.java index 8ed7c4d0b9b..e95af633028 100644 --- a/sonar-application/src/test/java/org/sonar/application/ConnectorsTest.java +++ b/sonar-application/src/test/java/org/sonar/application/ConnectorsTest.java @@ -153,6 +153,19 @@ public class ConnectorsTest { })); } + @Test + public void http_and_https_ports_should_be_different() throws Exception { + Properties p = new Properties(); + p.setProperty("sonar.web.port", "9000"); + p.setProperty("sonar.web.https.port", "9000"); + + try { + Connectors.configure(tomcat, new Props(p)); + fail(); + } catch (IllegalStateException e) { + assertThat(e).hasMessage("HTTP and HTTPS must not use the same port 9000"); + } + } //---- shutdown port -- 2.39.5