socket.go

 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}