From 4267e196ed3ec3efafcf6fb340a25aa1fe246399 Mon Sep 17 00:00:00 2001 From: e1732a364fed <75717694+e1732a364fed@users.noreply.github.com> Date: Sat, 1 Jan 2000 00:00:00 +0000 Subject: [PATCH] =?UTF-8?q?=E7=9B=91=E5=90=ACuds=E6=97=B6,=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E8=AE=BE=E6=96=87=E4=BB=B6=E6=9D=83=E9=99=90=E4=B8=BA?= =?UTF-8?q?666,=20closes=20#160?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/api_draft.md | 2 +- netLayer/listen.go | 28 +++++++++++----------------- 2 files changed, 12 insertions(+), 18 deletions(-) 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) }