diff options
| author | Junegunn Choi <junegunn.c@gmail.com> | 2025-10-09 13:52:10 +0900 |
|---|---|---|
| committer | Junegunn Choi <junegunn.c@gmail.com> | 2025-10-09 13:52:10 +0900 |
| commit | bf77206221b948c5824c37cb3216c24c4f10b827 (patch) | |
| tree | 59637d0122edf06bcd7623a36a0dd152c8fbfa51 /src/server.go | |
| parent | 0cb1be3f04a0bc39bc8371221352101f360ddb1c (diff) | |
| download | fzf-bf77206221b948c5824c37cb3216c24c4f10b827.tar.gz | |
Improve Unix domain socket handling
- Check if the file is in use
- Change the permission to 0600
Diffstat (limited to 'src/server.go')
| -rw-r--r-- | src/server.go | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/server.go b/src/server.go index 9f1200da..0b3a8c1e 100644 --- a/src/server.go +++ b/src/server.go @@ -89,11 +89,19 @@ func startHttpServer(address listenAddress, actionChannel chan []*action, getHan var listener net.Listener var err error if len(address.sock) > 0 { - os.Remove(address.sock) + if _, err := os.Stat(address.sock); err == nil { + // Check if the socket is already in use + if conn, err := net.Dial("unix", address.sock); err == nil { + conn.Close() + return nil, 0, fmt.Errorf("socket already in use: %s", address.sock) + } + os.Remove(address.sock) + } listener, err = net.Listen("unix", address.sock) if err != nil { return nil, 0, fmt.Errorf("failed to listen on %s", address.sock) } + os.Chmod(address.sock, 0600) } else { addrStr := fmt.Sprintf("%s:%d", host, port) listener, err = net.Listen("tcp", addrStr) |
