Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-pages.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/config/config.go14
-rw-r--r--internal/config/flags.go6
-rw-r--r--server.go7
3 files changed, 25 insertions, 2 deletions
diff --git a/internal/config/config.go b/internal/config/config.go
index 3bb7b126..2e2c99f4 100644
--- a/internal/config/config.go
+++ b/internal/config/config.go
@@ -22,6 +22,7 @@ type Config struct {
GitLab GitLab
Log Log
Sentry Sentry
+ Server Server
TLS TLS
Zip ZipServing
@@ -130,6 +131,13 @@ type ZipServing struct {
AllowedPaths []string
}
+type Server struct {
+ ReadTimeout time.Duration
+ ReadHeaderTimeout time.Duration
+ WriteTimeout time.Duration
+ ListenKeepAlive time.Duration
+}
+
func internalGitlabServerFromFlags() string {
if *internalGitLabServer != "" {
return *internalGitLabServer
@@ -227,6 +235,12 @@ func loadConfig() (*Config, error) {
OpenTimeout: *zipOpenTimeout,
AllowedPaths: []string{*pagesRoot},
},
+ Server: Server{
+ ReadTimeout: *serverReadTimeout,
+ ReadHeaderTimeout: *serverReadHeaderTimeout,
+ WriteTimeout: *serverWriteTimeout,
+ ListenKeepAlive: *serverKeepAlive,
+ },
// Actual listener pointers will be populated in appMain. We populate the
// raw strings here so that they are available in appMain
diff --git a/internal/config/flags.go b/internal/config/flags.go
index 93228827..d78c043e 100644
--- a/internal/config/flags.go
+++ b/internal/config/flags.go
@@ -62,6 +62,12 @@ var (
zipCacheRefresh = flag.Duration("zip-cache-refresh", 30*time.Second, "Zip serving archive cache refresh interval")
zipOpenTimeout = flag.Duration("zip-open-timeout", 30*time.Second, "Zip archive open timeout")
+ // HTTP server timeouts
+ serverReadTimeout = flag.Duration("server-read-timeout", 5*time.Second, "ReadTimeout is the maximum duration for reading the entire request, including the body. A zero or negative value means there will be no timeout.")
+ serverReadHeaderTimeout = flag.Duration("server-read-header-timeout", time.Second, "ReadHeaderTimeout is the amount of time allowed to read request headers. A zero or negative value means there will be no timeout.")
+ serverWriteTimeout = flag.Duration("server-write-timeout", 30*time.Second, "WriteTimeout is the maximum duration before timing out writes of the response. A zero or negative value means there will be no timeout.")
+ serverKeepAlive = flag.Duration("server-keep-alive", 15*time.Second, "KeepAlive specifies the keep-alive period for network connections accepted by this listener. If zero, keep-alives are enabled if supported by the protocol and operating system. If negative, keep-alives are disabled.")
+
disableCrossOriginRequests = flag.Bool("disable-cross-origin-requests", false, "Disable cross-origin requests")
showVersion = flag.Bool("version", false, "Show version")
diff --git a/server.go b/server.go
index 0af582ff..f3933642 100644
--- a/server.go
+++ b/server.go
@@ -6,7 +6,6 @@ import (
"fmt"
"net"
"net/http"
- "time"
proxyproto "github.com/pires/go-proxyproto"
"gitlab.com/gitlab-org/labkit/log"
@@ -37,8 +36,12 @@ func (a *theApp) listenAndServe(server *http.Server, addr string, h http.Handler
server.TLSConfig.NextProtos = append(server.TLSConfig.NextProtos, "h2")
}
+ server.ReadTimeout = a.config.Server.ReadTimeout
+ server.ReadHeaderTimeout = a.config.Server.ReadHeaderTimeout
+ server.WriteTimeout = a.config.Server.WriteTimeout
+
lc := net.ListenConfig{
- KeepAlive: 3 * time.Minute,
+ KeepAlive: a.config.Server.ListenKeepAlive,
}
l, err := lc.Listen(context.Background(), "tcp", addr)