From 5e4f84cf46b9e980314dc8702b57b76333472894 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 20 Jun 2016 14:12:49 +0100 Subject: [PATCH] Allow maximum HTTP header size to be configured when using Jetty 8 Closes gh-6190 --- .../autoconfigure/web/ServerProperties.java | 29 +++++++++++++++---- .../src/main/resources/application.properties | 1 + 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/ServerProperties.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/ServerProperties.java index 17afcff9df..11f56f3e53 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/ServerProperties.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/ServerProperties.java @@ -1005,13 +1005,18 @@ public class ServerProperties public void customize(Server server) { for (org.eclipse.jetty.server.Connector connector : server .getConnectors()) { - for (ConnectionFactory connectionFactory : connector - .getConnectionFactories()) { - if (connectionFactory instanceof HttpConfiguration.ConnectionFactory) { - customize( - (HttpConfiguration.ConnectionFactory) connectionFactory); + try { + for (ConnectionFactory connectionFactory : connector + .getConnectionFactories()) { + if (connectionFactory instanceof HttpConfiguration.ConnectionFactory) { + customize( + (HttpConfiguration.ConnectionFactory) connectionFactory); + } } } + catch (NoSuchMethodError ex) { + customizeOnJetty8(connector, maxHttpHeaderSize); + } } } @@ -1022,6 +1027,20 @@ public class ServerProperties configuration.setResponseHeaderSize(maxHttpHeaderSize); } + private void customizeOnJetty8( + org.eclipse.jetty.server.Connector connector, + int maxHttpHeaderSize) { + try { + connector.getClass().getMethod("setRequestHeaderSize", int.class) + .invoke(connector, maxHttpHeaderSize); + connector.getClass().getMethod("setResponseHeaderSize", int.class) + .invoke(connector, maxHttpHeaderSize); + } + catch (Exception ex) { + throw new RuntimeException(ex); + } + } + }); } diff --git a/spring-boot-samples/spring-boot-sample-jetty8/src/main/resources/application.properties b/spring-boot-samples/spring-boot-sample-jetty8/src/main/resources/application.properties index 09ab26becc..d919692f58 100644 --- a/spring-boot-samples/spring-boot-sample-jetty8/src/main/resources/application.properties +++ b/spring-boot-samples/spring-boot-sample-jetty8/src/main/resources/application.properties @@ -1,2 +1,3 @@ server.compression.enabled: true server.compression.min-response-size: 1 +server.max-http-header-size: 4096