diff --git a/backend/ipc/conn_other.go b/backend/ipc/conn_other.go index 9fd6ca7..5ac6a45 100644 --- a/backend/ipc/conn_other.go +++ b/backend/ipc/conn_other.go @@ -18,13 +18,13 @@ func init() { if home, err := os.UserHomeDir(); err == nil { socketPath = path.Join(home, "Library", "Caches", "supersonic", "supersonic.sock") } else if user, err := user.Current(); err == nil { - socketPath = fmt.Sprintf("/tmp/supersonic-%s.sock", user.Name) + socketPath = fmt.Sprintf("/tmp/supersonic-%s.sock", user.Uid) } } else { if runtime := os.Getenv("XDG_RUNTIME_DIR"); runtime != "" { socketPath = path.Join(runtime, "supersonic.sock") } else if user, err := user.Current(); err == nil { - socketPath = fmt.Sprintf("/tmp/supersonic-%s.sock", user.Name) + socketPath = fmt.Sprintf("/tmp/supersonic-%s.sock", user.Uid) } } } diff --git a/backend/ipc/conn_windows.go b/backend/ipc/conn_windows.go index 8ddf9c1..26de3d7 100644 --- a/backend/ipc/conn_windows.go +++ b/backend/ipc/conn_windows.go @@ -4,18 +4,26 @@ package ipc import ( "net" - "time" + "os/user" + "regexp" "github.com/Microsoft/go-winio" ) +var pipeName = `\\.\pipe\supersonic` + +func init() { + if user, err := user.Current(); err == nil { + pipeName += regexp.MustCompile(`[^a-zA-Z0-9]+`).ReplaceAllString(user.Name, "") + } +} + func Dial() (net.Conn, error) { - timeout := 300 * time.Millisecond - return winio.DialPipe("supersonic", &timeout) + return winio.DialPipe(pipeName, nil) } func Listen() (net.Listener, error) { - return winio.ListenPipe("supersonic", nil) + return winio.ListenPipe(pipeName, nil) } func DestroyConn() error {