in internal/proxy/proxy.go [831:875]
func newUnixSocketMount(inst InstanceConnConfig, unixSocketDir string, postgres bool) (string, error) {
var (
// the path to the unix socket
address string
// the parent directory of the unix socket
dir string
err error
)
if inst.UnixSocketPath != "" {
// When UnixSocketPath is set
address = inst.UnixSocketPath
// If UnixSocketPath ends .s.PGSQL.5432, remove it for consistency
if postgres && path.Base(address) == ".s.PGSQL.5432" {
address = path.Dir(address)
}
dir = path.Dir(address)
} else {
// When UnixSocket is set
dir = unixSocketDir
if dir == "" {
dir = inst.UnixSocket
}
address, err = UnixSocketDir(dir, inst.Name)
if err != nil {
return "", err
}
}
// if base directory does not exist, fail
if _, err := os.Stat(dir); err != nil {
return "", err
}
// When setting up a listener for Postgres, create address as a
// directory, and use the Postgres-specific socket name
// .s.PGSQL.5432.
if postgres {
// Make the directory only if it hasn't already been created.
if _, err := os.Stat(address); err != nil {
if err = os.Mkdir(address, 0777); err != nil {
return "", err
}
}
address = UnixAddress(address, ".s.PGSQL.5432")
}
return address, nil
}