summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2025-10-09 13:52:10 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2025-10-09 13:52:10 +0900
commitbf77206221b948c5824c37cb3216c24c4f10b827 (patch)
tree59637d0122edf06bcd7623a36a0dd152c8fbfa51
parent0cb1be3f04a0bc39bc8371221352101f360ddb1c (diff)
downloadfzf-bf77206221b948c5824c37cb3216c24c4f10b827.tar.gz
Improve Unix domain socket handling
- Check if the file is in use - Change the permission to 0600
-rw-r--r--src/server.go10
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)