From c9af5c14d8d86c7357c83dc29178f9fdbf587bbd Mon Sep 17 00:00:00 2001 From: Md Mushfiqur Rahim <20mahin2020@gmail.com> Date: Mon, 25 May 2026 00:10:45 +0600 Subject: [PATCH] fix(daemon): handle socket errors (#1335) ## What? Handles previously ignored daemon startup errors in `daemon/daemon.go`: - checks `os.Remove` when cleaning up a stale daemon socket, while ignoring `os.IsNotExist` - checks `os.Chmod` when setting daemon socket permissions - wraps both failures with contextual error messages ## Why? Closes #714 Closes #719 Ignoring these errors could either hide stale socket cleanup failures, leading to confusing daemon startup errors, or leave the daemon socket with unintended permissions if `chmod` failed. Returning explicit errors makes startup failures clearer and keeps socket permissions handling safer. --------- Co-authored-by: FromSi --- daemon/daemon.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/daemon/daemon.go b/daemon/daemon.go index b8d57116bd6a943653b39543c3106922ce597778..0fcbe5b46bb5db92ed76834abaafa343a06003e0 100644 --- a/daemon/daemon.go +++ b/daemon/daemon.go @@ -89,7 +89,9 @@ func (d *Daemon) Run() error { // Remove stale socket file. sockPath := daemonrpc.SocketPath() - os.Remove(sockPath) //nolint:errcheck,gosec + if err := os.Remove(sockPath); err != nil && !os.IsNotExist(err) { + return fmt.Errorf("remove stale socket: %w", err) + } // Listen on Unix domain socket. var err error @@ -100,7 +102,9 @@ func (d *Daemon) Run() error { defer d.listener.Close() //nolint:errcheck // Set socket permissions (owner only). - os.Chmod(sockPath, 0700) //nolint:errcheck,gosec + if err := os.Chmod(sockPath, 0700); err != nil { // #nosec G302 + return fmt.Errorf("set socket permissions: %w", err) + } log.Printf("daemon: listening on %s (PID %d)", sockPath, os.Getpid())