From 6b0753826efb558e0550a58069d24fdffd21cdbf Mon Sep 17 00:00:00 2001 From: danomagnum Date: Fri, 10 Jan 2025 12:10:48 -0600 Subject: [PATCH 1/3] Remove log.Fatal's. --- config.go | 17 ++++++++--------- server/server.go | 15 ++++++++++++--- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/config.go b/config.go index cefedd5c..a7526086 100644 --- a/config.go +++ b/config.go @@ -8,6 +8,7 @@ import ( "crypto/rsa" "crypto/x509" "encoding/pem" + "fmt" "log" "math/rand" "net" @@ -276,8 +277,7 @@ func loadPrivateKey(filename string) (*rsa.PrivateKey, error) { // It also detects and sets the ApplicationURI from the URI within the certificate. func Certificate(cert []byte) Option { return func(cfg *Config) error { - setCertificate(cert, cfg) - return nil + return setCertificate(cert, cfg) } } @@ -294,8 +294,7 @@ func CertificateFile(filename string) Option { if err != nil { return err } - setCertificate(cert, cfg) - return nil + return setCertificate(cert, cfg) } } @@ -316,23 +315,23 @@ func loadCertificate(filename string) ([]byte, error) { return block.Bytes, nil } -func setCertificate(cert []byte, cfg *Config) { +func setCertificate(cert []byte, cfg *Config) error { cfg.sechan.Certificate = cert // Extract the application URI from the certificate. x509cert, err := x509.ParseCertificate(cert) if err != nil { - log.Fatalf("Failed to parse certificate: %s", err) - return + return fmt.Errorf("failed to parse certificate: %s", err) } if len(x509cert.URIs) == 0 { - return + return nil } appURI := x509cert.URIs[0].String() if appURI == "" { - return + return nil } cfg.session.ClientDescription.ApplicationURI = appURI + return nil } // SecurityFromEndpoint sets the server-related security parameters from diff --git a/server/server.go b/server/server.go index 28be0f17..6dd0f806 100644 --- a/server/server.go +++ b/server/server.go @@ -108,11 +108,15 @@ func New(opts ...Option) *Server { for _, opt := range opts { opt(cfg) } + url := "" if len(cfg.endpoints) == 0 { - log.Fatalf("No endpoints defined!") + log.Printf("No endpoints defined!") + } else { + url = cfg.endpoints[0] } + s := &Server{ - url: cfg.endpoints[0], + url: url, cfg: cfg, cb: newChannelBroker(cfg.logger), sb: newSessionBroker(cfg.logger), @@ -148,7 +152,8 @@ func New(opts ...Option) *Server { n0, ok := s.namespaces[0].(*NodeNameSpace) n0.srv = s if !ok { - log.Fatalf("not a node namespace!") + // this should never happen because we just set namespace 0 to be a node namespace + log.Panic("Namespace 0 is not a node namespace!") } s.ImportNodeSet(&nodes) @@ -237,6 +242,10 @@ func (s *Server) URLs() []string { func (s *Server) Start(ctx context.Context) error { var err error + if len(s.cfg.endpoints) == 0 { + return fmt.Errorf("cannot start server: no endpoints defined") + } + // Register all service handlers s.initHandlers() From 23545f731df1a440957053f3241286db4e0196f3 Mon Sep 17 00:00:00 2001 From: danomagnum Date: Sat, 11 Jan 2025 11:29:27 -0600 Subject: [PATCH 2/3] removed extra log. --- server/server.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/server/server.go b/server/server.go index 6dd0f806..0b043a43 100644 --- a/server/server.go +++ b/server/server.go @@ -109,9 +109,7 @@ func New(opts ...Option) *Server { opt(cfg) } url := "" - if len(cfg.endpoints) == 0 { - log.Printf("No endpoints defined!") - } else { + if len(cfg.endpoints) != 0 { url = cfg.endpoints[0] } From 35483e16aa94479d81e3dd963ff612d4c18fc022 Mon Sep 17 00:00:00 2001 From: danomagnum Date: Sat, 11 Jan 2025 11:39:38 -0600 Subject: [PATCH 3/3] retrigger checks