keep track of services errors

So we can exit with the correct code if an error happen inside the
services goroutines

Fixes #143
This commit is contained in:
Nicola Murino 2020-07-09 19:16:52 +02:00
parent 1e10381143
commit 95fe26f3e3
2 changed files with 6 additions and 1 deletions

View file

@ -34,7 +34,9 @@ Please take a look at the usage below to customize the startup options`,
}
if err := service.Start(); err == nil {
service.Wait()
os.Exit(0)
if service.Error == nil {
os.Exit(0)
}
}
os.Exit(1)
},

View file

@ -35,6 +35,7 @@ type Service struct {
LogVerbose bool
Profiler bool
Shutdown chan bool
Error error
}
// Start initializes the service
@ -92,6 +93,7 @@ func (s *Service) Start() error {
if err := sftpdConf.Initialize(s.ConfigDir); err != nil {
logger.Error(logSender, "", "could not start SFTP server: %v", err)
logger.ErrorToConsole("could not start SFTP server: %v", err)
s.Error = err
}
s.Shutdown <- true
}()
@ -101,6 +103,7 @@ func (s *Service) Start() error {
if err := httpdConf.Initialize(s.ConfigDir, s.Profiler); err != nil {
logger.Error(logSender, "", "could not start HTTP server: %v", err)
logger.ErrorToConsole("could not start HTTP server: %v", err)
s.Error = err
}
s.Shutdown <- true
}()