From afffbb5aa9e753cd16f3cbbe296bd3de9b8404fd Mon Sep 17 00:00:00 2001 From: Fishbone <38041294+leiless@users.noreply.github.com> Date: Fri, 2 Jul 2021 20:32:12 +0800 Subject: [PATCH] proxy.go: Don't close listener when met 'accept: too many open files' error Since this error is temporary, we should continue to serving. --- server/proxy/proxy.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/server/proxy/proxy.go b/server/proxy/proxy.go index f26d73d5..c32af18a 100644 --- a/server/proxy/proxy.go +++ b/server/proxy/proxy.go @@ -156,7 +156,11 @@ func (pxy *BaseProxy) startListenHandler(p Proxy, handler func(Proxy, net.Conn, // if listener is closed, err returned c, err := l.Accept() if err != nil { - xl.Info("listener is closed") + xl.Warn("listener is closed: %s", err) + if err2, ok := err.(*net.OpError); ok && err2.Temporary() { + xl.Info("met temporary error when accepting, continue ...") + continue + } return } xl.Info("get a user connection [%s]", c.RemoteAddr().String())