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:
authorfeistel <6742251-feistel@users.noreply.gitlab.com>2022-01-21 15:41:47 +0300
committerfeistel <6742251-feistel@users.noreply.gitlab.com>2022-02-01 03:02:25 +0300
commit052a7fb36f4605634385f54c833db21a9edc6d67 (patch)
treec7083eedc04f13d9339a2a62255a9934a5b30c0e /server.go
parentdbe3bdee2eafbef6229838c711c3aa9596a23ddb (diff)
refactor: stop passing file descriptors around and use net.Listen
Changelog: changed
Diffstat (limited to 'server.go')
-rw-r--r--server.go36
1 files changed, 8 insertions, 28 deletions
diff --git a/server.go b/server.go
index ef15c5f8..a7379a61 100644
--- a/server.go
+++ b/server.go
@@ -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,