aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sonar-application/src/main/java/org/sonar/application/Connectors.java23
-rw-r--r--sonar-application/src/test/java/org/sonar/application/ConnectorsTest.java13
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<Connector> connectors) {
+ if (connectors.isEmpty()) {
+ throw new IllegalStateException("HTTP connectors are disabled");
+ }
+ Set<Integer> ports = new HashSet<Integer>();
+ 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