瀏覽代碼

fix #2141

Log errors from attempting to delete a unix domain socket path
tags/v2.14.0-rc1
Shivaram Lingamneni 1 月之前
父節點
當前提交
289b78d2fd
共有 1 個檔案被更改,包括 7 行新增3 行删除
  1. 7
    3
      irc/listeners.go

+ 7
- 3
irc/listeners.go 查看文件

@@ -5,6 +5,7 @@ package irc
5 5
 
6 6
 import (
7 7
 	"errors"
8
+	"io/fs"
8 9
 	"net"
9 10
 	"net/http"
10 11
 	"os"
@@ -29,7 +30,7 @@ type IRCListener interface {
29 30
 
30 31
 // NewListener creates a new listener according to the specifications in the config file
31 32
 func NewListener(server *Server, addr string, config utils.ListenerConfig, bindMode os.FileMode) (result IRCListener, err error) {
32
-	baseListener, err := createBaseListener(addr, bindMode)
33
+	baseListener, err := createBaseListener(server, addr, bindMode)
33 34
 	if err != nil {
34 35
 		return
35 36
 	}
@@ -43,11 +44,14 @@ func NewListener(server *Server, addr string, config utils.ListenerConfig, bindM
43 44
 	}
44 45
 }
45 46
 
46
-func createBaseListener(addr string, bindMode os.FileMode) (listener net.Listener, err error) {
47
+func createBaseListener(server *Server, addr string, bindMode os.FileMode) (listener net.Listener, err error) {
47 48
 	addr = strings.TrimPrefix(addr, "unix:")
48 49
 	if strings.HasPrefix(addr, "/") {
49 50
 		// https://stackoverflow.com/a/34881585
50
-		os.Remove(addr)
51
+		removeErr := os.Remove(addr)
52
+		if removeErr != nil && !errors.Is(removeErr, fs.ErrNotExist) {
53
+			server.logger.Warning("listeners", "could not delete unix domain listener", addr, removeErr.Error())
54
+		}
51 55
 		listener, err = net.Listen("unix", addr)
52 56
 		if err == nil && bindMode != 0 {
53 57
 			os.Chmod(addr, bindMode)

Loading…
取消
儲存