]> git.giacomolli.uk - onechat/blobdiff - daemon.go
Exit with status 0 when a signal stops the daemon
[onechat] / daemon.go
index 034cac7fdd43af811b70e84ed1aa203d6ab43c44..58bf502b5bba1b31d226f9439ac9038310a253ad 100644 (file)
--- a/daemon.go
+++ b/daemon.go
@@ -56,6 +56,14 @@ func daemon(ctx context.Context, out io.Writer) (err error) {
                return err
        }
 
                return err
        }
 
+       // Check the socket path before the daemon writes a file, so that a data
+       // directory with a long path stays empty.
+       socket := filepath.Join(dir, socketFileName)
+       err = checkSocketPath(socket)
+       if err != nil {
+               return err
+       }
+
        config, err := loadConfig(dir)
        if err != nil {
                return err
        config, err := loadConfig(dir)
        if err != nil {
                return err
@@ -90,7 +98,7 @@ func daemon(ctx context.Context, out io.Writer) (err error) {
                err = errors.Join(err, memory.Close())
        }()
 
                err = errors.Join(err, memory.Close())
        }()
 
-       listener, err := listenSocket(filepath.Join(dir, socketFileName))
+       listener, err := listenSocket(socket)
        if err != nil {
                return err
        }
        if err != nil {
                return err
        }