From 8b40ce14cb808ec0b5cdd6767ce8dac42df88e7c Mon Sep 17 00:00:00 2001 From: Bryan Turner Date: Sun, 28 Oct 2018 14:43:18 -0700 Subject: [PATCH] Restore max-http-header-size default value support Fix `TomcatWebServerFactoryCustomizer` to restore Spring Boot 2.0 behavior where a negative or zero `max-http-header-size` indicates that the server default should be used. See gh-14986 --- .../TomcatWebServerFactoryCustomizer.java | 2 +- .../TomcatWebServerFactoryCustomizerTests.java | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/TomcatWebServerFactoryCustomizer.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/TomcatWebServerFactoryCustomizer.java index 18b756f6df5..bc5a438df15 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/TomcatWebServerFactoryCustomizer.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/TomcatWebServerFactoryCustomizer.java @@ -86,7 +86,7 @@ public class TomcatWebServerFactoryCustomizer implements propertyMapper.from(tomcatProperties::getMinSpareThreads).when(this::isPositive) .to((minSpareThreads) -> customizeMinThreads(factory, minSpareThreads)); propertyMapper.from(this::determineMaxHttpHeaderSize).whenNonNull() - .asInt(DataSize::toBytes) + .asInt(DataSize::toBytes).when(this::isPositive) .to((maxHttpHeaderSize) -> customizeMaxHttpHeaderSize(factory, maxHttpHeaderSize)); propertyMapper.from(tomcatProperties::getMaxSwallowSize).whenNonNull() diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/embedded/TomcatWebServerFactoryCustomizerTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/embedded/TomcatWebServerFactoryCustomizerTests.java index 1ddbc689a0c..6f8083fa8c6 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/embedded/TomcatWebServerFactoryCustomizerTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/embedded/TomcatWebServerFactoryCustomizerTests.java @@ -129,6 +129,22 @@ public class TomcatWebServerFactoryCustomizerTests { .isEqualTo(DataSize.ofKilobytes(1).toBytes())); } + @Test + public void customMaxHttpHeaderSizeIgnoredIfNegative() { + bind("server.max-http-header-size=-1"); + customizeAndRunServer((server) -> assertThat(((AbstractHttp11Protocol) server + .getTomcat().getConnector().getProtocolHandler()).getMaxHttpHeaderSize()) + .isEqualTo(DataSize.ofKilobytes(8).toBytes())); + } + + @Test + public void customMaxHttpHeaderSizeIgnoredIfZero() { + bind("server.max-http-header-size=0"); + customizeAndRunServer((server) -> assertThat(((AbstractHttp11Protocol) server + .getTomcat().getConnector().getProtocolHandler()).getMaxHttpHeaderSize()) + .isEqualTo(DataSize.ofKilobytes(8).toBytes())); + } + @Test @Deprecated public void customMaxHttpHeaderSizeWithDeprecatedProperty() {