From f894d7fe3b217bd26dee0d0ec2cb2a859dce4ce8 Mon Sep 17 00:00:00 2001 From: Rene Pfeuffer Date: Wed, 7 Feb 2024 11:13:17 +0100 Subject: [PATCH] Add configuration for jetty idle timeout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pushed-by: Rene Pfeuffer Co-authored-by: René Pfeuffer Committed-by: René Pfeuffer --- gradle/changelog/idleTimeout.yaml | 2 ++ scm-packaging/docker/src/main/fs/etc/scm/config.yml | 3 +++ scm-packaging/rpm/src/main/fs/etc/scm/config.yml | 3 +++ scm-packaging/unix/src/main/fs/conf/config.yml | 3 +++ scm-packaging/windows/src/main/fs/conf/config.yml | 3 +++ .../src/main/java/sonia/scm/server/ServerConfigYaml.java | 9 +++++++++ .../main/java/sonia/scm/server/ServerConfiguration.java | 4 ++++ 7 files changed, 27 insertions(+) create mode 100644 gradle/changelog/idleTimeout.yaml diff --git a/gradle/changelog/idleTimeout.yaml b/gradle/changelog/idleTimeout.yaml new file mode 100644 index 0000000000..7ea5c02923 --- /dev/null +++ b/gradle/changelog/idleTimeout.yaml @@ -0,0 +1,2 @@ +- type: fixed + description: Added configuration option for idle timeout diff --git a/scm-packaging/docker/src/main/fs/etc/scm/config.yml b/scm-packaging/docker/src/main/fs/etc/scm/config.yml index 47819a211b..157b5469ba 100644 --- a/scm-packaging/docker/src/main/fs/etc/scm/config.yml +++ b/scm-packaging/docker/src/main/fs/etc/scm/config.yml @@ -10,6 +10,9 @@ forwardHeadersEnabled: false ## increase http header size for mercurial httpHeaderSize: 16384 +## set http idle timeout +idleTimeout: + # ssl config - ssl is only evaluated if key store path is set ## path to your cert file https: diff --git a/scm-packaging/rpm/src/main/fs/etc/scm/config.yml b/scm-packaging/rpm/src/main/fs/etc/scm/config.yml index e11f5dbe27..206be7a652 100644 --- a/scm-packaging/rpm/src/main/fs/etc/scm/config.yml +++ b/scm-packaging/rpm/src/main/fs/etc/scm/config.yml @@ -10,6 +10,9 @@ forwardHeadersEnabled: false ## increase http header size for mercurial httpHeaderSize: 16384 +## set http idle timeout +idleTimeout: + # ssl config - ssl is only evaluated if key store path is set https: ## path to your cert file diff --git a/scm-packaging/unix/src/main/fs/conf/config.yml b/scm-packaging/unix/src/main/fs/conf/config.yml index 06f2fe81d1..7296fc5f14 100644 --- a/scm-packaging/unix/src/main/fs/conf/config.yml +++ b/scm-packaging/unix/src/main/fs/conf/config.yml @@ -10,6 +10,9 @@ forwardHeadersEnabled: true ## increase http header size for mercurial httpHeaderSize: 16384 +## set http idle timeout +idleTimeout: + # ssl config - ssl is only evaluated if key store path is set https: ## path to your cert file diff --git a/scm-packaging/windows/src/main/fs/conf/config.yml b/scm-packaging/windows/src/main/fs/conf/config.yml index 5f4117d02e..8e47fc9327 100644 --- a/scm-packaging/windows/src/main/fs/conf/config.yml +++ b/scm-packaging/windows/src/main/fs/conf/config.yml @@ -10,6 +10,9 @@ forwardHeadersEnabled: false ## increase http header size for mercurial httpHeaderSize: 16384 +## set http idle timeout +idleTimeout: + # ssl config - ssl is only evaluated if key store path is set https: ## path to your cert file diff --git a/scm-server/src/main/java/sonia/scm/server/ServerConfigYaml.java b/scm-server/src/main/java/sonia/scm/server/ServerConfigYaml.java index f42f9a39a7..f04e8ee535 100644 --- a/scm-server/src/main/java/sonia/scm/server/ServerConfigYaml.java +++ b/scm-server/src/main/java/sonia/scm/server/ServerConfigYaml.java @@ -37,6 +37,7 @@ public class ServerConfigYaml { private String tempDir = "work/scm"; // Resolves the client ip instead of the reverse proxy ip if the X-Forwarded-For header is present private boolean forwardHeadersEnabled = false; + private int idleTimeout = 0; // ### SSL-related config // Only configure SSL if the key store path is set @@ -149,6 +150,14 @@ public class ServerConfigYaml { this.forwardHeadersEnabled = forwardHeadersEnabled; } + public int getIdleTimeout() { + return getEnvWithDefault("IDLE_TIMEOUT", idleTimeout); + } + + public void setIdleTimeout(int idleTimeout) { + this.idleTimeout = idleTimeout; + } + static int getEnvWithDefault(String envKey, int configValue) { String value = getEnv(envKey); return value != null ? Integer.parseInt(value) : configValue; diff --git a/scm-server/src/main/java/sonia/scm/server/ServerConfiguration.java b/scm-server/src/main/java/sonia/scm/server/ServerConfiguration.java index a5ae388ce4..13e3fcd705 100644 --- a/scm-server/src/main/java/sonia/scm/server/ServerConfiguration.java +++ b/scm-server/src/main/java/sonia/scm/server/ServerConfiguration.java @@ -118,6 +118,10 @@ public final class ServerConfiguration { connector.setHost(configYaml.getAddressBinding()); System.out.println("Set http port to " + configYaml.getPort()); connector.setPort(configYaml.getPort()); + if (configYaml.getIdleTimeout() > 0) { + System.out.println("Set http idle timeout to " + configYaml.getIdleTimeout()); + connector.setIdleTimeout(configYaml.getIdleTimeout()); + } server.addConnector(connector); }