Go's `net` package [will unlink][1] for us, as long as we used Listen & friends to create the Unix socket. Go will even skip the unlink when the socket appears to be abstract (starts with a NUL, represented by an @), though we must be cautious to only create sockets with an abstract address on platforms that actually support it -- this caused [several][2] [bugs][3] before. [1]: https://pkg.go.dev/net#UnixListener.SetUnlinkOnClose [2]: https://github.com/docker/cli/pull/4783 [3]: https://github.com/docker/cli/pull/4863 Signed-off-by: Bjorn Neergaard <bjorn.neergaard@docker.com>
15 lines
275 B
Go
15 lines
275 B
Go
//go:build !windows && !linux
|
|
|
|
package socket
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
func socketName(basename string) string {
|
|
// Because abstract sockets are unavailable, use a socket path in the
|
|
// system temporary directory.
|
|
return filepath.Join(os.TempDir(), basename)
|
|
}
|