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 <crush@charm.land>
commit18391023acc660b43bf3e5dd704dfb4b9b5d3fd7
authorChristian Rocha <christian@rocha.is>
dateMon 8 Jun 2026, 09:20 (4 months ago)
parente25d61c
internal/server/socket.gonew file+24
@@ -0,0 +1,24 @@
1+//go:build !windows
2+
3+package server
4+
5+import (
6+ "errors"
7+ "io/fs"
8+ "net"
9+ "syscall"
10+)
11+
12+// isStaleSocketErr reports whether err indicates a Unix-domain socket file
13+// exists on disk but no process is listening on it (a stale or orphaned
14+// socket). It returns false for nil and for timeout errors.
15+func isStaleSocketErr(err error) bool {
16+ if err == nil {
17+ return false
18+ }
19+ var netErr net.Error
20+ if errors.As(err, &netErr) && netErr.Timeout() {
21+ return false
22+ }
23+ return errors.Is(err, syscall.ECONNREFUSED) || errors.Is(err, fs.ErrNotExist)
24+}