diff --git a/docs/api_draft.md b/docs/api_draft.md index b8f1b63..5da67f2 100644 --- a/docs/api_draft.md +++ b/docs/api_draft.md @@ -16,7 +16,7 @@ 使用 https + basic auth + (plain text)/(json) -api在不复杂时,可以使用纯空格、换行符 分隔的字符串形式 or toml. +api在不复杂时,可以使用纯空格、换行符 分隔的字符串形式 (plain text) or toml/json. ### 功能列表 1. 生成toml配置文件功能【已实现】 diff --git a/netLayer/listen.go b/netLayer/listen.go index 131d88b..e2ae44f 100644 --- a/netLayer/listen.go +++ b/netLayer/listen.go @@ -64,22 +64,6 @@ func loopAccept(listener net.Listener, xver int, acceptFunc func(net.Conn)) { } } -/* -func loopAcceptUDP(uc net.UDPConn, acceptFunc func([]byte, *net.UDPAddr)) { - for { - p := utils.GetPacket() - n, addr, err := uc.ReadFromUDP(p) - if err != nil { - if ce := utils.CanLogWarn("loopAcceptUDP failed to accept"); ce != nil { - ce.Write(zap.Error(err)) - } - break - } - go acceptFunc(p[:n], addr) - } -} -*/ - // ListenAndAccept 试图监听 tcp, udp 和 unix domain socket 这三种传输层协议. // // 非阻塞,在自己的goroutine中监听. @@ -133,7 +117,7 @@ func ListenAndAccept(network, addr string, sockopt *Sockopt, xver int, acceptFun case UNIX: // 参考 https://eli.thegreenplace.net/2019/unix-domain-sockets-in-go/ - //监听 unix domain socket后,就会自动创建 相应文件; + //监听 unix domain socket 后,就会自动创建 相应文件; // 而且程序退出后,该文件不会被删除 // 而且再次启动后如果遇到了这个文件,就会报错,就像tcp端口已经被监听 的错误一样: // “bind: address already in use” @@ -173,6 +157,16 @@ func ListenAndAccept(network, addr string, sockopt *Sockopt, xver int, acceptFun return } + if p == UNIX { + eu := os.Chmod(addr, 0666) + if eu != nil { + if ce := utils.CanLogErr("unix file can't set to 0666"); ce != nil { + ce.Write(zap.String("deleting", addr)) + } + } + + } + go loopAccept(listener, xver, acceptFunc) }