From 22848b010d55b818f3d03fdbca02a67bc8ee225b Mon Sep 17 00:00:00 2001 From: Andrey Smirnov Date: Sun, 20 Jan 2019 00:01:44 +0300 Subject: [PATCH] Don't remove API file socket if it exists and it's usable --- cmd/api_serve.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/cmd/api_serve.go b/cmd/api_serve.go index 7c19d2ef..c42e092c 100644 --- a/cmd/api_serve.go +++ b/cmd/api_serve.go @@ -58,7 +58,25 @@ func aptlyAPIServe(cmd *commander.Command, args []string) error { listenURL, err := url.Parse(listen) if err == nil && listenURL.Scheme == "unix" { file := listenURL.Path - os.Remove(file) + + var stat os.FileInfo + stat, err = os.Stat(file) + shouldRemove := true + + if err == nil && stat.Mode()&os.ModeSocket == os.ModeSocket { + shouldRemove = false + } + + if err != nil && os.IsNotExist(err) { + shouldRemove = false + } + + if shouldRemove { + err = os.Remove(file) + if err != nil { + fmt.Printf("Warning: error removing file %s: %s\n", file, err) + } + } var listener net.Listener listener, err = net.Listen("unix", file)