diff --git a/buffer.go b/buffer.go index 7694b79..761f80b 100644 --- a/buffer.go +++ b/buffer.go @@ -19,6 +19,10 @@ type RingBuffer struct { // // rb := process.NewRingBuffer(256) func NewRingBuffer(size int) *RingBuffer { + if size <= 0 { + size = 1 + } + return &RingBuffer{ data: make([]byte, size), size: size, diff --git a/daemon.go b/daemon.go index a60c4ef..a2173ee 100644 --- a/daemon.go +++ b/daemon.go @@ -164,7 +164,9 @@ func (d *Daemon) Stop() error { // Auto-unregister if d.opts.Registry != nil { - _ = d.opts.Registry.Unregister(d.opts.RegistryEntry.Code, d.opts.RegistryEntry.Daemon) + if err := d.opts.Registry.Unregister(d.opts.RegistryEntry.Code, d.opts.RegistryEntry.Daemon); err != nil { + errs = append(errs, core.E("daemon.stop", "registry", err)) + } } d.running = false diff --git a/health.go b/health.go index 00093ed..84e4bf6 100644 --- a/health.go +++ b/health.go @@ -104,10 +104,17 @@ func (h *HealthServer) Start() error { // Stop gracefully shuts down the health server. func (h *HealthServer) Stop(ctx context.Context) error { - if h.server == nil { + h.mu.Lock() + server := h.server + h.server = nil + h.listener = nil + h.mu.Unlock() + + if server == nil { return nil } - return h.server.Shutdown(ctx) + + return server.Shutdown(ctx) } // Addr returns the actual address the server is listening on.