about summary refs log tree commit diff stats
path: root/internal/listenfd/listenfd.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/listenfd/listenfd.go')
-rw-r--r--internal/listenfd/listenfd.go30
1 files changed, 29 insertions, 1 deletions
diff --git a/internal/listenfd/listenfd.go b/internal/listenfd/listenfd.go
index 7d020b0..72259aa 100644
--- a/internal/listenfd/listenfd.go
+++ b/internal/listenfd/listenfd.go
@@ -1,16 +1,44 @@
 package listenfd
 
 import (
+	"crypto/tls"
 	"net"
 	"os"
 	"strconv"
+	"website/internal/log"
 
 	"github.com/pkg/errors"
 )
 
 const fdStart = 3
 
-func GetListener(i uint64) (net.Listener, error) {
+func GetListener(i uint64, addr string) (l net.Listener, err error) {
+	l, err = getFDSocket(0)
+	if err != nil {
+		log.Warn("could not create listener from listenfd", "error", err)
+	}
+
+	log.Debug("listener from listenfd?", "passed", l != nil)
+	if l == nil {
+		l, err = net.Listen("tcp", addr)
+		if err != nil {
+			return nil, errors.Wrap(err, "could not create listener")
+		}
+	}
+
+	return
+}
+
+func GetListenerTLS(i uint64, addr string, config *tls.Config) (l net.Listener, err error) {
+	l, err = GetListener(i, addr)
+	if err != nil {
+		return nil, err
+	}
+
+	return tls.NewListener(l, config), nil
+}
+
+func getFDSocket(i uint64) (net.Listener, error) {
 	lfds, present := os.LookupEnv("LISTEN_FDS")
 	if !present {
 		return nil, nil