diff --git a/haproxy/certs.go b/haproxy/certs.go index 46edfa1..865f9e8 100644 --- a/haproxy/certs.go +++ b/haproxy/certs.go @@ -28,7 +28,12 @@ func (h *haConfig) FilePath(content []byte) (string, error) { if err != nil { return "", err } - defer f.Close() + defer func() { + err := f.Close() + if err != nil { + log.Errorf("error closing file %s: %s", path, err) + } + }() _, err = f.Write(content) if err != nil { diff --git a/haproxy/config.go b/haproxy/config.go index 1c9459a..bb1fd78 100644 --- a/haproxy/config.go +++ b/haproxy/config.go @@ -109,7 +109,12 @@ func newHaConfig(baseDir string, sd *lib.Shutdown) (*haConfig, error) { if err != nil { return nil, err } - defer cfgFile.Close() + defer func() { + err := cfgFile.Close() + if err != nil { + log.Errorf("error closing config file %s: %s", cfg.HAProxy, err) + } + }() dataplanePass = createRandomString() @@ -130,7 +135,12 @@ func newHaConfig(baseDir string, sd *lib.Shutdown) (*haConfig, error) { sd.Done() return nil, err } - defer spoeCfgFile.Close() + defer func() { + err := spoeCfgFile.Close() + if err != nil { + log.Errorf("error closing spoe config file %s: %s", cfg.SPOE, err) + } + }() _, err = spoeCfgFile.WriteString(spoeConfTmpl) if err != nil { sd.Done() diff --git a/haproxy/dataplane/dataplane.go b/haproxy/dataplane/dataplane.go index 62ea6bd..d9ab1eb 100644 --- a/haproxy/dataplane/dataplane.go +++ b/haproxy/dataplane/dataplane.go @@ -129,7 +129,12 @@ func (c *Dataplane) makeReq(method, url string, reqData, resData interface{}) er if err != nil { return errors.Wrapf(err, "error calling %s %s", method, url) } - defer res.Body.Close() + defer func() { + err := res.Body.Close() + if err != nil { + log.Errorf("error calling %s %s: %s", method, url, err) + } + }() if res.StatusCode >= http.StatusBadRequest { body, _ := ioutil.ReadAll(res.Body) diff --git a/haproxy/haproxy.go b/haproxy/haproxy.go index 0649962..bcc5481 100644 --- a/haproxy/haproxy.go +++ b/haproxy/haproxy.go @@ -103,8 +103,14 @@ func (h *HAProxy) startLogger() error { server := syslog.NewServer() server.SetFormat(syslog.RFC5424) server.SetHandler(handler) - server.ListenUnixgram(h.haConfig.LogsSock) - server.Boot() + err := server.ListenUnixgram(h.haConfig.LogsSock) + if err != nil { + return fmt.Errorf("error starting syslog logger: %s", err) + } + err = server.Boot() + if err != nil { + return fmt.Errorf("error starting syslog logger: %s", err) + } go func(channel syslog.LogPartsChannel) { for logParts := range channel { @@ -183,7 +189,10 @@ func (h *HAProxy) startStats() error { http.Handle("/metrics", promhttp.Handler()) log.Infof("Starting stats server at %s", h.opts.StatsListenAddr) - http.ListenAndServe(h.opts.StatsListenAddr, nil) + err := http.ListenAndServe(h.opts.StatsListenAddr, nil) + if err != nil { + log.Errorf("error starting stats server: %s", err) + } }() return nil diff --git a/haproxy/haproxy_cmd/cmd.go b/haproxy/haproxy_cmd/cmd.go index 6e19473..256d33f 100644 --- a/haproxy/haproxy_cmd/cmd.go +++ b/haproxy/haproxy_cmd/cmd.go @@ -16,10 +16,13 @@ import ( func runCommand(sd *lib.Shutdown, cmdPath string, args ...string) (*exec.Cmd, error) { _, file := path.Split(cmdPath) cmd := exec.Command(cmdPath, args...) - halog.Cmd("haproxy", cmd) + err := halog.Cmd("haproxy", cmd) + if err != nil { + return nil, err + } sd.Add(1) - err := cmd.Start() + err = cmd.Start() if err != nil { sd.Done() return nil, errors.Wrapf(err, "error starting %s", file) @@ -46,7 +49,10 @@ func runCommand(sd *lib.Shutdown, cmdPath string, args ...string) (*exec.Cmd, er return } log.Infof("killing %s with sig %d", file, syscall.SIGTERM) - syscall.Kill(cmd.Process.Pid, syscall.SIGTERM) + err := syscall.Kill(cmd.Process.Pid, syscall.SIGTERM) + if err != nil { + log.Errorf("could not kill %s: %s", file, err) + } }() return cmd, nil diff --git a/haproxy/haproxy_cmd/cmd_test.go b/haproxy/haproxy_cmd/cmd_test.go index cd303c1..d9437e8 100644 --- a/haproxy/haproxy_cmd/cmd_test.go +++ b/haproxy/haproxy_cmd/cmd_test.go @@ -12,7 +12,8 @@ func Test_runCommand_ok(t *testing.T) { sd := lib.NewShutdown() cmd, err := runCommand(sd, "ls", ".") require.NoError(t, err) - cmd.Wait() + err = cmd.Wait() + require.NoError(t, err) } func Test_runCommand_nok_wrong_path(t *testing.T) { diff --git a/haproxy/haproxy_cmd/run.go b/haproxy/haproxy_cmd/run.go index 61f16cd..d14dd84 100644 --- a/haproxy/haproxy_cmd/run.go +++ b/haproxy/haproxy_cmd/run.go @@ -41,9 +41,6 @@ func Start(sd *lib.Shutdown, cfg Config) (*dataplane.Dataplane, error) { if err != nil { return nil, err } - if haCmd.Process == nil { - return nil, fmt.Errorf("%s was not started", cfg.HAProxyPath) - } cmd, err := runCommand(sd, cfg.DataplanePath, diff --git a/haproxy_test.go b/haproxy_test.go index 522cc07..5fff04c 100644 --- a/haproxy_test.go +++ b/haproxy_test.go @@ -62,7 +62,8 @@ func TestService(t *testing.T) { body, err := ioutil.ReadAll(res.Body) require.NoError(t, err) - res.Body.Close() + err = res.Body.Close() + require.NoError(t, err) require.Equal(t, "hello connect", string(body)) } @@ -131,6 +132,7 @@ func TestPreparedQuery(t *testing.T) { body, err := ioutil.ReadAll(res.Body) require.NoError(t, err) - res.Body.Close() + err = res.Body.Close() + require.NoError(t, err) require.Equal(t, "hello connect prepared query", string(body)) }