Merge pull request #29 from strogiyotec/sock_file_fix

delete socket file after accidental crash
This commit is contained in:
Kevin Schoon 2020-09-06 18:01:15 -05:00 committed by GitHub
commit f2d98027e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 14 additions and 0 deletions

View File

@ -2,7 +2,10 @@ package main
import ( import (
"encoding/json" "encoding/json"
"errors"
"fmt"
"net" "net"
"os"
) )
// Server listens on a Unix domain socket // Server listens on a Unix domain socket
@ -39,6 +42,17 @@ func (s *Server) Stop() {
} }
func NewServer(runner *TaskRunner, config *Config) (*Server, error) { func NewServer(runner *TaskRunner, config *Config) (*Server, error) {
//check if socket file exists
if _, err := os.Stat(config.SocketPath); err == nil {
_, err := net.Dial("unix", config.SocketPath)
//if error then sock file was saved after crash
if err != nil {
os.Remove(config.SocketPath)
} else {
// another instance of pomo is running
return nil, errors.New(fmt.Sprintf("Socket %s is already in use", config.SocketPath))
}
}
listener, err := net.Listen("unix", config.SocketPath) listener, err := net.Listen("unix", config.SocketPath)
if err != nil { if err != nil {
return nil, err return nil, err