From 5cf01133f4a94fd37ee12919610728f9caa4a10a Mon Sep 17 00:00:00 2001 From: Suresh Manikonda Date: Wed, 7 Oct 2026 15:57:04 -0400 Subject: [PATCH 1/2] Updated embedded jetty server request and response header sizes from hardcoded values to configurable and defaults to 32768 instead of 8192 --- client/conf/server.properties.in | 4 ++++ .../org/apache/cloudstack/ServerDaemon.java | 20 ++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/client/conf/server.properties.in b/client/conf/server.properties.in index 5958486b4dff..cd1be553b825 100644 --- a/client/conf/server.properties.in +++ b/client/conf/server.properties.in @@ -42,6 +42,10 @@ request.max.form.keys=5000 https.enable=false https.port=8443 +# Maximum HTTP request and response header sizes in bytes +request.header.size=32768 +response.header.size=32768 + # The keystore and manager passwords are assumed to be same. https.keystore=/etc/cloudstack/management/cloud.jks # If you want to encrypt the password itself, follow the steps mentioned at: diff --git a/client/src/main/java/org/apache/cloudstack/ServerDaemon.java b/client/src/main/java/org/apache/cloudstack/ServerDaemon.java index 196695e1fc6b..59fe55a20b9b 100644 --- a/client/src/main/java/org/apache/cloudstack/ServerDaemon.java +++ b/client/src/main/java/org/apache/cloudstack/ServerDaemon.java @@ -78,6 +78,8 @@ public class ServerDaemon implements Daemon { private static final String HTTP_PORT = "http.port"; private static final String HTTPS_ENABLE = "https.enable"; private static final String HTTPS_PORT = "https.port"; + private static final String REQUEST_HEADER_SIZE = "request.header.size"; + private static final String RESPONSE_HEADER_SIZE = "response.header.size"; private static final String KEYSTORE_FILE = "https.keystore"; private static final String KEYSTORE_PASSWORD = "https.keystore.password"; private static final String WEBAPP_DIR = "webapp.dir"; @@ -88,7 +90,7 @@ public class ServerDaemon implements Daemon { private static final int DEFAULT_REQUEST_MAX_FORM_KEYS = 5000; private static final String THREADS_MIN = "threads.min"; private static final String THREADS_MAX = "threads.max"; - + //////////////////////////////////////////////////////// /////////////// Server Configuration /////////////////// //////////////////////////////////////////////////////// @@ -98,6 +100,8 @@ public class ServerDaemon implements Daemon { private boolean httpEnable = true; private int httpPort = 8080; private int httpsPort = 8443; + private int requestHeaderSize = 32768; + private int responseHeaderSize = 32768; private int sessionTimeout = 30; private int maxFormContentSize = DEFAULT_REQUEST_CONTENT_SIZE; private int maxFormKeys = DEFAULT_REQUEST_MAX_FORM_KEYS; @@ -144,6 +148,8 @@ public void init(final DaemonContext context) { setHttpPort(Integer.valueOf(properties.getProperty(HTTP_PORT, "8080"))); setHttpsEnable(Boolean.valueOf(properties.getProperty(HTTPS_ENABLE, "false"))); setHttpsPort(Integer.valueOf(properties.getProperty(HTTPS_PORT, "8443"))); + setRequestHeaderSize(Integer.valueOf(properties.getProperty(REQUEST_HEADER_SIZE, "32768"))); + setResponseHeaderSize(Integer.valueOf(properties.getProperty(RESPONSE_HEADER_SIZE, "32768"))); setKeystoreFile(properties.getProperty(KEYSTORE_FILE)); setKeystorePassword(properties.getProperty(KEYSTORE_PASSWORD)); setWebAppLocation(properties.getProperty(WEBAPP_DIR)); @@ -189,8 +195,8 @@ public void start() throws Exception { httpConfig.setSecureScheme("https"); httpConfig.setSecurePort(httpsPort); httpConfig.setOutputBufferSize(32768); - httpConfig.setRequestHeaderSize(8192); - httpConfig.setResponseHeaderSize(8192); + httpConfig.setRequestHeaderSize(requestHeaderSize); + httpConfig.setResponseHeaderSize(responseHeaderSize); httpConfig.setSendServerVersion(false); httpConfig.setSendDateHeader(false); addForwardingCustomiser(httpConfig); @@ -365,6 +371,14 @@ public void setHttpsPort(int httpsPort) { this.httpsPort = httpsPort; } + public void setRequestHeaderSize(int requestHeaderSize) { + this.requestHeaderSize = requestHeaderSize; + } + + public void setResponseHeaderSize(int responseHeaderSize) { + this.responseHeaderSize = responseHeaderSize; + } + public void setContextPath(String contextPath) { this.contextPath = contextPath; } From aa0be6a88c7732d69bc4dc1f762721f9d5f3d28e Mon Sep 17 00:00:00 2001 From: Suresh Manikonda Date: Wed, 7 Oct 2026 16:24:37 -0400 Subject: [PATCH 2/2] Removed trailing space --- client/src/main/java/org/apache/cloudstack/ServerDaemon.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/main/java/org/apache/cloudstack/ServerDaemon.java b/client/src/main/java/org/apache/cloudstack/ServerDaemon.java index 59fe55a20b9b..b9f2a517dff1 100644 --- a/client/src/main/java/org/apache/cloudstack/ServerDaemon.java +++ b/client/src/main/java/org/apache/cloudstack/ServerDaemon.java @@ -90,7 +90,7 @@ public class ServerDaemon implements Daemon { private static final int DEFAULT_REQUEST_MAX_FORM_KEYS = 5000; private static final String THREADS_MIN = "threads.min"; private static final String THREADS_MAX = "threads.max"; - + //////////////////////////////////////////////////////// /////////////// Server Configuration /////////////////// ////////////////////////////////////////////////////////