From 18391023acc660b43bf3e5dd704dfb4b9b5d3fd7 Mon Sep 17 00:00:00 2001 From: Christian Rocha Date: Mon, 8 Jun 2026 09:20:30 -0400 Subject: [PATCH] feat(server): add helper to detect stale unix sockets Adds a helper that recognizes when a unix socket file is left on disk but no process is listening on it, so later code can clean it up safely. Co-Authored-By: Charm Crush --- internal/server/socket.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 internal/server/socket.go diff --git a/internal/server/socket.go b/internal/server/socket.go new file mode 100644 index 0000000000000000000000000000000000000000..88cee66e6b3742d33ced61048c13305ad07fc277 --- /dev/null +++ b/internal/server/socket.go @@ -0,0 +1,24 @@ +//go:build !windows + +package server + +import ( + "errors" + "io/fs" + "net" + "syscall" +) + +// isStaleSocketErr reports whether err indicates a Unix-domain socket file +// exists on disk but no process is listening on it (a stale or orphaned +// socket). It returns false for nil and for timeout errors. +func isStaleSocketErr(err error) bool { + if err == nil { + return false + } + var netErr net.Error + if errors.As(err, &netErr) && netErr.Timeout() { + return false + } + return errors.Is(err, syscall.ECONNREFUSED) || errors.Is(err, fs.ErrNotExist) +}