diff options
author | feistel <6742251-feistel@users.noreply.gitlab.com> | 2022-01-21 15:41:47 +0300 |
---|---|---|
committer | feistel <6742251-feistel@users.noreply.gitlab.com> | 2022-02-01 03:02:25 +0300 |
commit | 052a7fb36f4605634385f54c833db21a9edc6d67 (patch) | |
tree | c7083eedc04f13d9339a2a62255a9934a5b30c0e /server.go | |
parent | dbe3bdee2eafbef6229838c711c3aa9596a23ddb (diff) |
refactor: stop passing file descriptors around and use net.Listen
Changelog: changed
Diffstat (limited to 'server.go')
-rw-r--r-- | server.go | 36 |
1 files changed, 8 insertions, 28 deletions
@@ -1,11 +1,11 @@ package main import ( + "context" "crypto/tls" "fmt" "net" "net/http" - "os" "time" proxyproto "github.com/pires/go-proxyproto" @@ -13,35 +13,13 @@ import ( "gitlab.com/gitlab-org/gitlab-pages/internal/netutil" ) -type keepAliveListener struct { - net.Listener -} - -type keepAliveSetter interface { - SetKeepAlive(bool) error - SetKeepAlivePeriod(time.Duration) error -} - type listenerConfig struct { isProxyV2 bool tlsConfig *tls.Config limiter *netutil.Limiter } -func (ln *keepAliveListener) Accept() (net.Conn, error) { - conn, err := ln.Listener.Accept() - if err != nil { - return nil, err - } - - kc := conn.(keepAliveSetter) - kc.SetKeepAlive(true) - kc.SetKeepAlivePeriod(3 * time.Minute) - - return conn, nil -} - -func (a *theApp) listenAndServe(server *http.Server, fd uintptr, h http.Handler, opts ...option) error { +func (a *theApp) listenAndServe(server *http.Server, addr string, h http.Handler, opts ...option) error { config := &listenerConfig{} for _, opt := range opts { @@ -58,17 +36,19 @@ func (a *theApp) listenAndServe(server *http.Server, fd uintptr, h http.Handler, server.TLSConfig.NextProtos = append(server.TLSConfig.NextProtos, "h2") } - l, err := net.FileListener(os.NewFile(fd, "[socket]")) + lc := net.ListenConfig{ + KeepAlive: 3 * time.Minute, + } + + l, err := lc.Listen(context.Background(), "tcp", addr) if err != nil { - return fmt.Errorf("failed to listen on FD %d: %w", fd, err) + return fmt.Errorf("failed to listen on addr %s: %w", addr, err) } if config.limiter != nil { l = netutil.SharedLimitListener(l, config.limiter) } - l = &keepAliveListener{l} - if config.isProxyV2 { l = &proxyproto.Listener{ Listener: l, |