Skip to content

Commit 1ea829e

Browse files
PostalBearphilwebb
authored andcommitted
Fix connector used to configure connection timeout
Fix Tomcat customization so that the main connection is configured with any timeout. Closes gh-7425
1 parent a3b79be commit 1ea829e

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/ServerProperties.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -809,14 +809,20 @@ void customizeTomcat(ServerProperties serverProperties,
809809
}
810810

811811
private void customizeConnectionTimeout(
812-
TomcatEmbeddedServletContainerFactory factory, int connectionTimeout) {
813-
for (Connector connector : factory.getAdditionalTomcatConnectors()) {
814-
if (connector.getProtocolHandler() instanceof AbstractProtocol) {
815-
AbstractProtocol<?> handler = (AbstractProtocol<?>) connector
816-
.getProtocolHandler();
817-
handler.setConnectionTimeout(connectionTimeout);
812+
TomcatEmbeddedServletContainerFactory factory,
813+
final int connectionTimeout) {
814+
factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
815+
816+
@Override
817+
public void customize(Connector connector) {
818+
ProtocolHandler handler = connector.getProtocolHandler();
819+
if (handler instanceof AbstractProtocol) {
820+
AbstractProtocol<?> protocol = (AbstractProtocol<?>) handler;
821+
protocol.setConnectionTimeout(connectionTimeout);
822+
}
818823
}
819-
}
824+
825+
});
820826
}
821827

822828
private void customizeRemoteIpValve(ServerProperties properties,

spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/ServerPropertiesTests.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,14 @@ public void testServerHeader() throws Exception {
111111
assertThat(this.properties.getServerHeader()).isEqualTo("Custom Server");
112112
}
113113

114+
@Test
115+
public void testConnectionTimeout() throws Exception {
116+
Map<String, String> map = new HashMap<String, String>();
117+
map.put("server.connection-timeout", "60000");
118+
bindProperties(map);
119+
assertThat(this.properties.getConnectionTimeout()).isEqualTo(60000);
120+
}
121+
114122
@Test
115123
public void testServletPathAsMapping() throws Exception {
116124
RelaxedDataBinder binder = new RelaxedDataBinder(this.properties, "server");

0 commit comments

Comments
 (0)