From 41d17dc5432c6de3c2d32de95d78c5939bbe517a Mon Sep 17 00:00:00 2001 From: Jens L Date: Tue, 7 Mar 2023 13:27:46 +0100 Subject: [PATCH] internal: fix crash when port 9000 is in use (#4863) fix crash when port 9000 is in use Signed-off-by: Jens Langhammer --- internal/crypto/generate.go | 4 ++-- internal/outpost/ldap/ldap.go | 3 ++- internal/outpost/ldap/ldap_tls.go | 3 ++- internal/outpost/proxyv2/proxyv2.go | 4 +++- internal/web/tls.go | 2 +- internal/web/web.go | 3 ++- 6 files changed, 12 insertions(+), 7 deletions(-) diff --git a/internal/crypto/generate.go b/internal/crypto/generate.go index c7b4792d5..a310ccdf1 100644 --- a/internal/crypto/generate.go +++ b/internal/crypto/generate.go @@ -17,7 +17,7 @@ import ( func GenerateSelfSignedCert() (tls.Certificate, error) { priv, err := rsa.GenerateKey(rand.Reader, 2048) if err != nil { - log.Fatalf("Failed to generate private key: %v", err) + log.WithError(err).Warning("Failed to generate private key") return tls.Certificate{}, err } @@ -29,7 +29,7 @@ func GenerateSelfSignedCert() (tls.Certificate, error) { serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128) serialNumber, err := rand.Int(rand.Reader, serialNumberLimit) if err != nil { - log.Fatalf("Failed to generate serial number: %v", err) + log.WithError(err).Warning("Failed to generate serial number") return tls.Certificate{}, err } diff --git a/internal/outpost/ldap/ldap.go b/internal/outpost/ldap/ldap.go index 3ab8e4fd6..24a28e3a1 100644 --- a/internal/outpost/ldap/ldap.go +++ b/internal/outpost/ldap/ldap.go @@ -55,7 +55,8 @@ func (ls *LDAPServer) StartLDAPServer() error { ln, err := net.Listen("tcp", listen) if err != nil { - ls.log.WithField("listen", listen).WithError(err).Fatalf("listen failed") + ls.log.WithField("listen", listen).WithError(err).Warning("Failed to listen (SSL)") + return err } proxyListener := &proxyproto.Listener{Listener: ln} defer proxyListener.Close() diff --git a/internal/outpost/ldap/ldap_tls.go b/internal/outpost/ldap/ldap_tls.go index 67b464645..a16034dbe 100644 --- a/internal/outpost/ldap/ldap_tls.go +++ b/internal/outpost/ldap/ldap_tls.go @@ -46,7 +46,8 @@ func (ls *LDAPServer) StartLDAPTLSServer() error { ln, err := net.Listen("tcp", listen) if err != nil { - ls.log.WithField("listen", listen).WithError(err).Fatalf("listen failed") + ls.log.WithField("listen", listen).WithError(err).Warning("Failed to listen") + return err } proxyListener := &proxyproto.Listener{Listener: ln} diff --git a/internal/outpost/proxyv2/proxyv2.go b/internal/outpost/proxyv2/proxyv2.go index 11338fcc6..930111931 100644 --- a/internal/outpost/proxyv2/proxyv2.go +++ b/internal/outpost/proxyv2/proxyv2.go @@ -115,7 +115,8 @@ func (ps *ProxyServer) ServeHTTP() { listenAddress := config.Get().Listen.HTTP listener, err := net.Listen("tcp", listenAddress) if err != nil { - ps.log.WithField("listen", listenAddress).WithError(err).Fatalf("listen failed") + ps.log.WithField("listen", listenAddress).WithError(err).Warning("Failed to listen") + return } proxyListener := &proxyproto.Listener{Listener: listener} defer proxyListener.Close() @@ -137,6 +138,7 @@ func (ps *ProxyServer) ServeHTTPS() { ln, err := net.Listen("tcp", listenAddress) if err != nil { ps.log.WithError(err).Warning("Failed to listen (TLS)") + return } proxyListener := &proxyproto.Listener{Listener: web.TCPKeepAliveListener{TCPListener: ln.(*net.TCPListener)}} defer proxyListener.Close() diff --git a/internal/web/tls.go b/internal/web/tls.go index 21af2f1ee..0a98522d0 100644 --- a/internal/web/tls.go +++ b/internal/web/tls.go @@ -43,7 +43,7 @@ func (ws *WebServer) listenTLS() { ln, err := net.Listen("tcp", config.Get().Listen.HTTPS) if err != nil { - ws.log.WithError(err).Fatalf("failed to listen (TLS)") + ws.log.WithError(err).Warning("failed to listen (TLS)") return } proxyListener := &proxyproto.Listener{Listener: web.TCPKeepAliveListener{TCPListener: ln.(*net.TCPListener)}} diff --git a/internal/web/web.go b/internal/web/web.go index 8e440bd2a..83a89dbfa 100644 --- a/internal/web/web.go +++ b/internal/web/web.go @@ -63,7 +63,8 @@ func (ws *WebServer) Shutdown() { func (ws *WebServer) listenPlain() { ln, err := net.Listen("tcp", config.Get().Listen.HTTP) if err != nil { - ws.log.WithError(err).Fatal("failed to listen") + ws.log.WithError(err).Warning("failed to listen") + return } proxyListener := &proxyproto.Listener{Listener: ln} defer proxyListener.Close()