1//go:build !windows
2
3package server
4
5import (
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.
15func 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}