Skip to content

Commit 83fc4b3

Browse files
committed
Merge pull request #12120 from Marcos Trejo Munguia
* gh-12120: Polish "Set host when creating Jetty SSL connector" Set host when creating Jetty SSL connector
2 parents 14ff776 + eaf3789 commit 83fc4b3

File tree

2 files changed

+33
-9
lines changed

2 files changed

+33
-9
lines changed

spring-boot/src/main/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactory.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ public EmbeddedServletContainer getEmbeddedServletContainer(
180180
SslContextFactory sslContextFactory = new SslContextFactory();
181181
configureSsl(sslContextFactory, getSsl());
182182
AbstractConnector connector = getSslServerConnectorFactory()
183-
.getConnector(server, sslContextFactory, port);
183+
.createConnector(server, sslContextFactory, address);
184184
server.setConnectors(new Connector[] { connector });
185185
}
186186
for (JettyServerCustomizer customizer : getServerCustomizers()) {
@@ -700,8 +700,8 @@ private void addJettyErrorPages(ErrorHandler errorHandler,
700700
*/
701701
private interface SslServerConnectorFactory {
702702

703-
AbstractConnector getConnector(Server server, SslContextFactory sslContextFactory,
704-
int port);
703+
AbstractConnector createConnector(Server server,
704+
SslContextFactory sslContextFactory, InetSocketAddress address);
705705

706706
}
707707

@@ -712,8 +712,8 @@ private static class Jetty9SslServerConnectorFactory
712712
implements SslServerConnectorFactory {
713713

714714
@Override
715-
public ServerConnector getConnector(Server server,
716-
SslContextFactory sslContextFactory, int port) {
715+
public ServerConnector createConnector(Server server,
716+
SslContextFactory sslContextFactory, InetSocketAddress address) {
717717
HttpConfiguration config = new HttpConfiguration();
718718
config.setSendServerVersion(false);
719719
config.addCustomizer(new SecureRequestCustomizer());
@@ -722,7 +722,8 @@ public ServerConnector getConnector(Server server,
722722
sslContextFactory, HttpVersion.HTTP_1_1.asString());
723723
ServerConnector serverConnector = new ServerConnector(server,
724724
sslConnectionFactory, connectionFactory);
725-
serverConnector.setPort(port);
725+
serverConnector.setPort(address.getPort());
726+
serverConnector.setHost(address.getHostString());
726727
return serverConnector;
727728
}
728729

@@ -735,16 +736,18 @@ private static class Jetty8SslServerConnectorFactory
735736
implements SslServerConnectorFactory {
736737

737738
@Override
738-
public AbstractConnector getConnector(Server server,
739-
SslContextFactory sslContextFactory, int port) {
739+
public AbstractConnector createConnector(Server server,
740+
SslContextFactory sslContextFactory, InetSocketAddress address) {
740741
try {
741742
Class<?> connectorClass = Class
742743
.forName("org.eclipse.jetty.server.ssl.SslSocketConnector");
743744
AbstractConnector connector = (AbstractConnector) connectorClass
744745
.getConstructor(SslContextFactory.class)
745746
.newInstance(sslContextFactory);
746747
connector.getClass().getMethod("setPort", int.class).invoke(connector,
747-
port);
748+
address.getPort());
749+
connector.getClass().getMethod("setHost", String.class).invoke(connector,
750+
address.getHostString());
748751
return connector;
749752
}
750753
catch (Exception ex) {

spring-boot/src/test/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactoryTests.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,27 @@ public void sslEnabledProtocolsConfiguration() throws Exception {
244244
.isEqualTo(new String[] { "TLSv1.1" });
245245
}
246246

247+
@Test
248+
public void sslEnabledSpecificIPAddress() throws Exception {
249+
Ssl ssl = new Ssl();
250+
ssl.setKeyStore("src/test/resources/test.jks");
251+
ssl.setKeyStorePassword("secret");
252+
ssl.setKeyPassword("password");
253+
254+
JettyEmbeddedServletContainerFactory factory = getFactory();
255+
factory.setSsl(ssl);
256+
factory.setAddress(
257+
InetAddress.getByAddress(InetAddress.getLocalHost().getAddress()));
258+
259+
this.container = factory.getEmbeddedServletContainer();
260+
this.container.start();
261+
262+
JettyEmbeddedServletContainer jettyContainer = (JettyEmbeddedServletContainer) this.container;
263+
ServerConnector connector = (ServerConnector) jettyContainer.getServer()
264+
.getConnectors()[0];
265+
assertThat(connector.getHost()).isEqualTo(factory.getAddress().getHostAddress());
266+
}
267+
247268
private void assertTimeout(JettyEmbeddedServletContainerFactory factory,
248269
int expected) {
249270
this.container = factory.getEmbeddedServletContainer();

0 commit comments

Comments
 (0)