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); }